基于@MapperScan和@ComponentScan的使用區(qū)別
@MapperScan和@ComponentScan區(qū)別
今天在擼SpringBoot的時候,突然對注解產生了混淆,@MapperScan和@ComponentScan都是掃描包,二者之間有什么區(qū)別呢?
首先,@ComponentScan是組件掃描注解,用來掃描@Controller @Service @Repository這類,主要就是定義掃描的路徑從中找出標志了需要裝配的類到Spring容器中
其次,@MapperScan 是掃描mapper類的注解,就不用在每個mapper類上加@MapperScan了
這兩個注解是可以同時使用的。
@MapperScan和@ComponentScan使用
報錯如下
原因
當@MapperScan和@ComponentScan一起使用時,項目啟動時掃描包會發(fā)生沖突,找不到swagger配置類的包和mapper接口的包
解決辦法
@MapperScan和@ComponentScan可以一起使用。
改為@MapperScan(basePackages = {})的形式。
或者只使用@MapperScan()去掃描mapper包,讓項目啟動自己去掃描swagger配置類的包
課外拓展
@MapperScan
- 1.首先了解@Mapper
- 在持久層的接口上添加@Mapper注解,編譯后會生成相應的接口實現(xiàn)類,但由于要在每個接口上都進行配置,所以產生了@MapperScan。
- 2.@MapperScan
- 指定要編譯成接口實現(xiàn)類的包路徑,在編譯完成后這個包下的所有接口都會生成相應的接口實現(xiàn)類。
@ComponentScan
- 1.會自動掃描包路徑下的@Controller、@Service、@Repository、@Component類,符合掃描規(guī)則的類會裝配到spring容器中。
- 2.@MapperScan和@ComponentScan可以同時使用
如果@MapperScan和@ComponentScan掃描的是同一路徑會產生錯誤,所以
@MapperScan(basePackages = { "com" }) @SpringBootApplication
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Java動態(tài)規(guī)劃之硬幣找零問題實現(xiàn)示例
本文主要介紹了Java動態(tài)規(guī)劃之硬幣找零問題實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-08-08MyBatis注解開發(fā)-@Insert和@InsertProvider的使用
這篇文章主要介紹了MyBatis注解開發(fā)-@Insert和@InsertProvider的使用,具有很好的參考價值,希望對大家有所幫助。2022-07-07MyBatis中的collection兩種使用方法及效率比較
collection主要是應對表關系是一對多的情況,本文主要介紹了MyBatis中的collection兩種使用方法及效率比較,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-06-06Java設計模式之解釋器模式_動力節(jié)點Java學院整理
解釋器模式是一個比較少用的模式,本人之前也沒有用過這個模式。下面我們就來一起看一下解釋器模式2017-08-08SpringBoot無法請求html等靜態(tài)資源文件webapp或者resources/static的問題及解決方案
今天遇到一個問題無法訪問靜態(tài)資源文件,html,本文給大家分享SpringBoot無法請求html等靜態(tài)資源文件webapp或者resources/static的問題及解決方案,感興趣的朋友一起看看吧2024-05-05