Spring Boot迁移时找不到org.hibernate.SessionFactory类型Bean问题求助
问题解决思路
1. 首先确认Spring Boot版本兼容性
你原有项目依赖Spring 3 + Hibernate 3,而Spring Boot 2.0及以上版本依赖的Spring Framework 5.x已经完全移除了对Hibernate 3的支持包org.springframework.orm.hibernate3,会直接导致项目B中定义的AnnotationSessionFactoryBean实例化失败,对应的SessionFactory自然不会注册到容器中。
请将你的Spring Boot版本降级到1.5.x最后稳定版,该版本依赖的Spring Framework 4.3.x仍保留了Hibernate 3的兼容支持。
2. 确认自定义XML配置被Spring Boot正确加载
Spring Boot默认不会主动识别项目中的自定义Spring XML配置文件,你需要在启动类上添加@ImportResource注解显式加载你的配置:
@SpringBootApplication @ImportResource(locations = {"classpath:你的配置文件名称.xml"}) // 替换为你项目里的XML配置文件名 public class ApplicationStarter { public static void main(String[] args) { SpringApplication.run(ApplicationStarter.class, args); } }
配置加载后你可以启动时添加--debug参数,查看日志确认项目B的config.xml被成功导入、sessionFactory bean的初始化状态。
3. 补全缺失的依赖包
请检查项目的依赖管理,确保已经引入以下必需依赖(无需修改项目B代码):
- Hibernate 3核心包,版本和原有项目保持一致
- 对应数据库的JDBC驱动包
- Spring Boot 1.5.x对应的spring-orm兼容包
4. 高版本Spring Boot兼容方案(如必须使用2.x及以上版本)
如果有强制要求使用高版本Spring Boot,可以手动将Spring 4.3.x版本中org.springframework.orm.hibernate3包下的所有类复制到你的新项目源码路径下,这些类是开源可独立复用的,即可保证项目B中定义的AnnotationSessionFactoryBean正常实例化,无需修改原有配置。
内容的提问来源于stack exchange,提问作者Carlos Martel Lamas
相关产品推荐
相关产品推荐

