springboot项目启动时报错,提示不能注入dao层的bean,然后service层和controller层的注入的dao层的bean出错误

时间:2024-03-21 17:10:38

Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name ‘XXXController’: Unsatisfied dependency expressed through field ‘pp’; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name ‘XXXService’: Unsatisfied dependency expressed through field ‘userTestDao’; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type ‘com.example.dao.primary.XXXDao’ available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

先说下我的项目环境,springboot+mybatis+springmvc 其中数据源使用配置类的方式写的,想写一个简单的查询测试数据源配置是否正确

启动时报错的信息如上所示,昨天下午弄了一下午,在网上搜无非就是以下几种情况:
1.可能是因为dao层的接口没有使用@mapper注解或者@repository将这个接口声明为dao层,我的dao层的接口都用了@Mapper注解,所以这种方法对我这个项目没有作用
2.第二种说法是:检查springboot的启动类和要扫描包的类的位置,springboot启动类自动扫描的规则是默认规则是根据Application类所在的包位置从上往下扫描,它只能扫描到启动类同级或者这个包下所有子类的注解,比如说启动类的包是:com.example.caffe,这个启动类只能自动扫描到com.example.caffe和com.example.caffe.xx这个子类下的注解,我项目中的启动类和要扫描的类位置没有错,所以这个方法也没有效果。
3.在启动类上面加一个@MapperScan注解,把你要扫描的dao层的路径放进去:
springboot项目启动时报错,提示不能注入dao层的bean,然后service层和controller层的注入的dao层的bean出错误
我昨天这样放启动还是有问题,今天就这样想把错误给截图下来,居然启动成功了、我昨天的解决方法也是加上@MapperScan注解,后面加上dao层的路径,但是放的位置不一样,昨天是放在数据源的配置类上面的,总之经测试,两种方法都可以,原因也在其他博客上面看到说过,不知道正确性怎样,好像是说springboot不能扫描到dao层,所以需要自己配置要扫描的dao层的路径,因为一个小问题,昨天下午弄了很久,所以今天总结下原因,希望也能给有同样错误的朋友一点点参考!