Dru*_*nix 3 java jpa spring-boot
我在 Spring Boot 2.3.3 上有一个使用 JPA 的 CommandLineRunner,完成后有 1 分钟的延迟(请参阅下面的日志)。即使不存在实体类并且没有 JPA 操作,也会发生这种情况。它可以通过仅包含一个主要为空的主类的项目来重现。
\n2.2.7 版本中没有出现这种情况,但 2.3.1 版本中却出现了这种情况。它不仅发生在 h2 上,也发生在其他数据库(derby、oracle)上。如果我只使用 spring-boot-starter-data-jdbc 而不是 spring-boot-starter-data-jpa ,则不会有延迟。
\n有什么办法可以避免这种延迟吗?
\n2020-09-01 10:51:57.408 INFO 30314 --- [ main] testcase.SlowShutdown : Starting SlowShutdown on io with PID 30314 \n2020-09-01 10:51:57.410 INFO 30314 --- [ main] testcase.SlowShutdown : No active profile set, falling back to default profiles: default\n2020-09-01 10:51:57.858 INFO 30314 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFERRED mode.\n2020-09-01 10:51:57.873 INFO 30314 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 10ms. Found 0 JPA repository interfaces.\n2020-09-01 10:51:58.095 INFO 30314 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'\n2020-09-01 10:51:58.100 INFO 30314 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...\n2020-09-01 10:51:58.171 INFO 30314 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.\n2020-09-01 10:51:58.216 INFO 30314 --- [ task-1] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [name: default]\n2020-09-01 10:51:58.243 INFO 30314 --- [ task-1] org.hibernate.Version : HHH000412: Hibernate ORM core version 5.4.20.Final\n2020-09-01 10:51:58.274 INFO 30314 --- [ main] DeferredRepositoryInitializationListener : Triggering deferred initialization of Spring Data repositories\xe2\x80\xa6\n2020-09-01 10:51:58.274 INFO 30314 --- [ main] DeferredRepositoryInitializationListener : Spring Data repositories initialized!\n2020-09-01 10:51:58.282 INFO 30314 --- [ main] testcase.SlowShutdown : Started SlowShutdown in 1.118 seconds (JVM running for 1.579)\n2020-09-01 10:51:58.283 INFO 30314 --- [ main] testcase.SlowShutdown : start\n2020-09-01 10:51:58.315 INFO 30314 --- [ task-1] o.hibernate.annotations.common.Version : HCANN000001: Hibernate Commons Annotations {5.1.0.Final}\n2020-09-01 10:51:58.387 INFO 30314 --- [ task-1] org.hibernate.dialect.Dialect : HHH000400: Using dialect: org.hibernate.dialect.H2Dialect\n2020-09-01 10:51:58.498 INFO 30314 --- [ task-1] o.h.e.t.j.p.i.JtaPlatformInitiator : HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]\n2020-09-01 10:51:58.502 INFO 30314 --- [ task-1] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'\n2020-09-01 10:52:58.512 INFO 30314 --- [extShutdownHook] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default'\n2020-09-01 10:52:58.513 INFO 30314 --- [extShutdownHook] .SchemaDropperImpl$DelayedDropActionImpl : HHH000477: Starting delayed evictData of schema as part of SessionFactory shut-down'\n2020-09-01 10:52:58.519 INFO 30314 --- [extShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor'\n2020-09-01 10:52:58.521 INFO 30314 --- [extShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated...\n2020-09-01 10:52:58.529 INFO 30314 --- [extShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.\nRun Code Online (Sandbox Code Playgroud)\n波姆:
\n<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\n xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">\n <modelVersion>4.0.0</modelVersion>\n <parent>\n <groupId>org.springframework.boot</groupId>\n <artifactId>spring-boot-starter-parent</artifactId>\n <version>2.3.3.RELEASE</version>\n <relativePath/>\n </parent>\n <groupId>test</groupId>\n <artifactId>slowshutdown</artifactId>\n <version>0.0.1-SNAPSHOT</version>\n <name>slowshutdown</name>\n <description>slowshutdown</description>\n <properties>\n <java.version>11</java.version>\n </properties>\n <dependencies>\n <dependency>\n <groupId>org.springframework.boot</groupId>\n <artifactId>spring-boot-starter-data-jpa</artifactId>\n </dependency>\n <dependency>\n <groupId>com.h2database</groupId>\n <artifactId>h2</artifactId>\n <scope>runtime</scope>\n </dependency>\n </dependencies>\n <build>\n <plugins>\n <plugin>\n <groupId>org.springframework.boot</groupId>\n <artifactId>spring-boot-maven-plugin</artifactId>\n </plugin>\n </plugins>\n </build>\n</project>\nRun Code Online (Sandbox Code Playgroud)\n主要类别:
\npackage testcase;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.springframework.boot.CommandLineRunner;\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\n\n\n@SpringBootApplication\npublic class SlowShutdown implements CommandLineRunner {\n private static final Log log = LogFactory.getLog(SlowShutdown.class);\n\n public static void main(String[] args) {\n SpringApplication.run(SlowShutdown.class, args);\n }\n\n @Override\n public void run(String... args) throws Exception {\n log.info("start");\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n
Spring Boot 2.3 版本附带了 Spring Data 的新主要版本。
正如他们在文档BootstrapMode中指出的,他们更改了JPA 存储库的默认设置:
从#16230开始,JPA 存储库的默认设置
BootstrapMode现已“延迟”,以缩短启动时间。您可以使用配置属性恢复新的默认值spring.data.jpa.repositories.bootstrap-mode=default。
为了避免延迟,您只需创建一个application.properties文件,并按所示定义属性spring.data.jpa.repositories.bootstrap-mode:
spring.data.jpa.repositories.bootstrap-mode=default
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2259 次 |
| 最近记录: |