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

使用Spring web-mvc 5.0.1.RELEASE与Hibernate 5.2.15.Final遇依赖异常

解决Spring UnsatisfiedDependencyException依赖问题

咱们先拆解下这个异常:org.springframework.beans.factory.UnsatisfiedDependencyException 本质是Spring容器在创建DemoDaoImpl这个Bean时,找不到它依赖的sessionFactory Bean,或者sessionFactory本身创建失败了(从嵌套的BeanCreationException也能看出端倪)。结合你Jar+War的Maven项目结构,我整理了几个最可能的排查方向:

1. 确认Jar工程的Bean是否被War的Spring容器扫描到

Jar里的DemoDaoImpl或者相关配置类,有没有被War工程的Spring上下文纳入扫描范围?

  • 要是用注解驱动(比如@SpringBootApplication或@ComponentScan),得确保扫描路径包含Jar工程的包路径。比如Jar类在com.example.jar.dao,那War的@ComponentScan要写成basePackages = {"com.example.war", "com.example.jar"}
  • 要是用XML配置,得检查有没有导入Jar里的配置文件,比如用<import resource="classpath*:spring-jar-config.xml"/>(注意用classpath*:才能扫描到Jar包内的资源)

2. 排查SessionFactory的配置问题

嵌套的BeanCreationException说明sessionFactory本身创建失败,常见原因有这些:

  • 数据库连接配置错误:检查War工程的application.properties/application.yml或XML里的数据库URL、用户名、密码是否正确,驱动类是否匹配数据库版本
  • Hibernate配置问题:比如hibernate.hbm2ddl.auto的取值是否合法,实体类的@Entity注解或.hbm.xml映射文件有没有配置错误,遗漏必要属性
  • 要是SessionFactory的配置在Jar工程里,得确保这些配置能被War工程加载到——比如Jar里的配置文件是否正确打包,War能读取到

3. 检查Maven依赖范围是否正确

你在War的pom.xml里配置Jar依赖时,依赖范围(<scope>)是不是compile?如果误设成provided或test,Tomcat启动时Jar里的类不会被加载,自然找不到Bean。正确的配置应该是:

<dependency>
    <groupId>你的Jar工程groupId</groupId>
    <artifactId>你的Jar工程artifactId</artifactId>
    <version>对应版本号</version>
    <!-- 默认就是compile,也可以显式声明 -->
    <scope>compile</scope>
</dependency>

4. 验证Jar包是否正确依赖

  • 先确认Jar工程已经执行mvn clean install,把Jar包安装到本地Maven仓库了
  • 检查War工程target目录下的WEB-INF/lib文件夹,有没有你的Jar包。如果没有,说明Maven依赖没生效,可能是groupId/artifactId/version写错了,或者Jar工程没安装成功

额外排查小技巧

  • 开启Spring的DEBUG日志,查看容器初始化时的Bean扫描和创建过程,能清楚看到哪些Bean被加载、哪些没被加载,方便定位问题
  • 检查DemoDaoImpl里的sessionFactory字段有没有加@Autowired或@Resource注解?没加的话Spring没法自动注入依赖

内容的提问来源于stack exchange,提问作者Satendra Aditya

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:39:44