1. 场景描述
启动的时候报”springboot available: expected at least 1 bean which qualifies as autowire candidate“。
2. 解决方案
该错误一眼看过去,简单说就是bean无效,无法注入,使用的@Autowired或者@Resource注入bean有问题。
才想起来昨天从其他地方新加入一个mapper文件,为了区分现在的mapper,就单独放到一个文件夹里了。
2.1 问题定位
(1)首先确认新建文件夹是否启动类Application在同级或者下级目录,检查后发现在,那为什么没有加载?
(2)然后检查了启动类上的标签:@SpringBootApplication
看了下@SpringBootApplication源码,其中@ComponentScan就是扫描注解,默认是扫描当前类下的package。将@Controller/@Service/@Component/@Repository等注解加载到IOC容器中。
但是我们使用的mybatis-genarator自动生成的Mapper和mapper.xml,是没有用@Repository标签,我们使用的mapperLocations的方式指定包加载进来的,所以说新加的文件夹是里面的mapper文件是不会自动加入到IOC容器的。
2.2 问题解决
在启动类上新增标签@MapperScan("com.laowang.newmapper")或者使用mapperLocations,将新的mapper文件夹加入进来就会自动扫描到IOC中了。
springboot不加载mapper文件问题解析
原文地址:https://www.cnblogs.com/ruanjianlaowang/p/11182693.html
时间: 2024-10-08 00:32:34