springboot不加載mapper文件問題解析


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中了。



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM