java - 我正在尝试将我的应用程序从 Spring 转移到 Spring Boot,但我遇到了一些问题。特别是以下异常
问题描述
我根本没有使用实体管理器。相反,我使用的是休眠(会话工厂)。这是我的应用程序属性
mysql.driver=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/spring_hiber?verifyServerCertificate=false&useSSL=false&requireSSL=false&useLegacyDatetimeCode=false&&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=password
# Hibernate properties
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=create
Exception in thread "task-2" java.lang.IllegalStateException: EntityManagerFactory is closed
at org.hibernate.internal.SessionFactoryImpl.validateNotClosed(SessionFactoryImpl.java:507)
at org.hibernate.internal.SessionFactoryImpl.getProperties(SessionFactoryImpl.java:501)
at org.springframework.boot.autoconfigure.orm.jpa.DataSourceInitializedPublisher.findDataSource(DataSourceInitializedPublisher.java:105)
at org.springframework.boot.autoconfigure.orm.jpa.DataSourceInitializedPublisher.publishEventIfRequired(DataSourceInitializedPublisher.java:97)
at org.springframework.boot.autoconfigure.orm.jpa.DataSourceInitializedPublisher.access$100(DataSourceInitializedPublisher.java:50)
at org.springframework.boot.autoconfigure.orm.jpa.DataSourceInitializedPublisher$DataSourceSchemaCreatedPublisher.lambda$postProcessEntityManagerFactory$0(DataSourceInitializedPublisher.java:200)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:830)
解决方案
Spring Boot 会自动配置 Spring Data 相关的 Bean,无论你使用与否。如果您不想使用 EntityManager,则排除这些与关系数据库相关的自动配置类。
在 Spring Boot 应用程序中,您需要做
@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class, HibernateJpaAutoConfiguration.class})
@SpringBootApplication
public class SpringApplication {
//...
}
推荐阅读
- spring - 我可以使用@WebMVCTest 加载@Component 吗?
- visual-studio-code - 创建 VSCode 片段时,如何将变量转换为标题大小写(如 TitleCase)?
- arrays - 比较两个数组并将第二个数组的对应值提取到新数组MATLAB
- java - 为什么 PrimeGenerator 类生成的数字比我想要的多一个?
- google-cloud-sql - 了解 gcloud sql export sql 和后续 import 的行为
- pyspark - 使用 pyspark 根据另一列中的值连接 2 列
- c++ - 我的数据结构有问题,双向链表
- font-awesome - #id 和 .subclass 都不能同时工作
- arrays - 通过将每个单元格值拆分为由字符分隔的多个整数来创建一维数组,忽略其他字符
- c# - 如何将我的应用程序中的参数插入外部 url