第一种异常:NoSuchBeanDefinitionException

org.springframework.beans.factory.NoSuchBeanDefinitionException:
No qualifying bean of type ‘com.espen.atcrowdfunding.service.UserService’ available:
expected at least 1 bean which qualifies as autowire candidate.
Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

这就是没有找到service对应的bean,出现这个问题的排错思路:

  1. 查看spring配置文件中的包扫描路径是否正确
  2. service接口的实现类上面是否标注了@Service注解
  3. 如果前两步都没有问题,那么你的service实现类前面应该会有一个标记,
    [idea] ssm多模块整合,@Autowired注入service失败
    点击一下可以直接跳转到你配置文件中配置扫描包的位置
    [idea] ssm多模块整合,@Autowired注入service失败
  4. 如果没有这个标记,那可能是你的pom文件里没有添加对于service所在项目的依赖【讲道理,这种情况,你连service项目本身引入的jar都拿不到,在编译期就会有很多报错的。。。】
  5. 如果前面几步都没有问题,那么问题基本就处在web.xml这里了,尤其是加载的配置文件:<context-param>标签加载的是spring的配置文件,前端控制器的servlet里加载的是springmvc的配置文件。当然,你如果不使用<context-param>和ContextLoaderListener监听器,也可以用一个总的spring配置文件,在其中使用<import>标签导入其他的配置文件,这样只需要在前端控制器中加载这个总的配置文件就行了

第二种异常:ClassNotFoundException

java.lang.ClassNotFoundException: com.espen.atcrowdfunding.service.UserService
这个一般来说就是service所在项目没有添加 到 Output Root

先按F12,然后一张图搞定

[idea] ssm多模块整合,@Autowired注入service失败

相关文章: