spring-boot - 升级到 Spring Boot 2.2.2 后应用程序启动缓慢
问题描述
我将我的应用程序升级到 Spring Boot 2.2.2,现在启动时间在 30 秒范围内。
:: Built with Spring Boot :: 2.2.2.RELEASE
2019-12-23 10:38:06.822 INFO 4669 --- [ restartedMain] c.d.l.i.r.IdeaSubmissionRestApplication : Starting IdeaSubmissionRestApplication on wsm-93.local with PID 4669 (/Users/mhast/Developer/sts_workspaces_4_4_1/dss/ldrd_s/IdeaSubmissionRest/target/classes started by mhast in /Users/mhast/Developer/sts_workspaces_4_4_1/dss/ldrd_s/IdeaSubmissionRest)
2019-12-23 10:38:06.826 INFO 4669 --- [ restartedMain] c.d.l.i.r.IdeaSubmissionRestApplication : The following profiles are active: dev
...
2019-12-23 10:38:08.440 INFO 4669 --- [ restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8320 (http)
2019-12-23 10:38:08.447 INFO 4669 --- [ restartedMain] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2019-12-23 10:38:08.448 INFO 4669 --- [ restartedMain] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.29]
2019-12-23 10:38:08.512 INFO 4669 --- [ restartedMain] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2019-12-23 10:38:08.512 INFO 4669 --- [ restartedMain] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 1530 ms
2019-12-23 10:38:08.678 INFO 4669 --- [ restartedMain] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
2019-12-23 10:38:09.189 INFO 4669 --- [ restartedMain] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
2019-12-23 10:38:09.234 INFO 4669 --- [ restartedMain] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [name: default]
2019-12-23 10:38:09.285 INFO 4669 --- [ restartedMain] org.hibernate.Version : HHH000412: Hibernate Core {5.4.9.Final}
2019-12-23 10:38:09.370 INFO 4669 --- [ restartedMain] o.hibernate.annotations.common.Version : HCANN000001: Hibernate Commons Annotations {5.1.0.Final}
2019-12-23 10:38:09.456 INFO 4669 --- [ restartedMain] org.hibernate.dialect.Dialect : HHH000400: Using dialect: org.hibernate.dialect.Oracle10gDialect
2019-12-23 10:38:37.903 INFO 4669 --- [ restartedMain] org.hibernate.tuple.PojoInstantiator : HHH000182: No default (no-argument) constructor for class: com.desertsky.ldrd.model.entities.FrsFactTableViewId (class must be instantiated by Interceptor)
2019-12-23 10:38:39.038 INFO 4669 --- [ restartedMain] o.h.e.t.j.p.i.JtaPlatformInitiator : HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
2019-12-23 10:38:39.043 INFO 4669 --- [ restartedMain] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2019-12-23 10:38:40.109 WARN 4669 --- [ restartedMain] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning
加载 Oracle10gDialect 从 10:38:09.456 开始,下一个日志是 28 秒后。
2019-12-23 10:38:09.456 INFO 4669 --- [ restartedMain] org.hibernate.dialect.Dialect : HHH000400: Using dialect: org.hibernate.dialect.Oracle10gDialect
2019-12-23 10:38:37.903 INFO 4669 --- [ restartedMain] org.hibernate.tuple.PojoInstantiator : HHH000182: No default (no-argument) constructor for class: com.desertsky.ldrd.model.entities.FrsFactTableViewId (class must be instantiated by Interceptor)
有谁知道为什么升级到 Spring Boot 2.2.2 后方言加载如此缓慢?
解决方案
我在这篇文章中找到了答案。
我将此属性添加到我的 application.properties 文件中,然后我又回到了快速的应用程序启动状态。
spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults=false
JBoss Hibernate 文档说:
This setting is used to control whether we should consult the JDBC metadata to determine certain Settings default values when the database may not be available (mainly in tools usage).
推荐阅读
- c - 如果条件没有正确输出但它在 C 中编译
- python - 更新帖子“'bytes'对象没有属性'_committed'”时Django管理面板错误
- jquery - jQuery make child element and parent element show on hover and fade out when not
- python - 如何获取具有唯一列值的行数(按其他列值分组)?
- python - 如何在 BeautifulSoup find_all ResultSet 之外继续过滤?
- javascript - 如何创建一个显示所有已连接用户的光标位置的页面?Node.js、ws、快递
- automation - exists().click 不适用于空手道 0.9.6.RC3 版本
- laravel - laravel控制器中的复选框值
- android - declareMock<> 在 android 单元测试中不能与 mockk 一起使用
- android - Android:如何在 ViewPager2 中拦截触摸事件