You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无XML配置Spring项目找不到SessionFactory类型Bean报错如何解决

问题排查与解决步骤

1. 解决类无法解析问题

你遇到的LocalSessionFactoryBean、HibernateTransactionManager符号无法解析,是缺失spring-orm和Hibernate核心依赖导致的,在项目中引入对应依赖即可:

Maven配置(pom.xml)

<dependencies>
    <!-- Spring ORM -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-orm</artifactId>
        <version>对应你的Spring版本号</version>
    </dependency>
    <!-- Hibernate核心 -->
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>对应你使用的Hibernate版本号</version>
    </dependency>
</dependencies>

Gradle配置(build.gradle)

dependencies {
    implementation 'org.springframework:spring-orm:你的Spring版本号'
    implementation 'org.hibernate:hibernate-core:你的Hibernate版本号'
}

注意:如果使用Hibernate 5及以上版本,需要导入org.springframework.orm.hibernate5.LocalSessionFactoryBean和org.springframework.orm.hibernate5.HibernateTransactionManager,不要导错Hibernate 3/4的旧版本包

2. 解决SessionFactory无法注入问题

依赖正确引入后如果还有SessionFactory找不到的报错,按以下顺序排查:

  • 确认DemoAppConfig类上加了@Configuration注解,没有该注解的话,类内部的@Bean方法不会被Spring识别处理,自然不会生成SessionFactory实例
  • LocalSessionFactoryBean是SpringFactoryBean接口的实现类,Spring会自动调用其getObject()方法,将返回的SessionFactory实例注册到容器中,不需要你手动做额外转换
  • 确认配置类中的env对象已经通过@Autowired/@Resource注入,避免setPackagesToScan传入null值导致sessionFactory初始化失败
  • 确认EmployeeDAO类所在的包在Spring组件扫描范围内,即配置类上的@ComponentScan注解包含了DAO的包路径,否则DAO内的@Autowired注解不会被Spring处理
  • 确认你配置的myDataSource()和getHibernateProperties()方法返回值正常,没有空值或者配置错误,否则sessionFactory初始化失败也会导致容器中没有对应Bean

内容的提问来源于stack exchange,提问作者Stefan Jankovic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 02:18:03