日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

@MapperScan和@ComponentScan使用问题

發布時間:2025/3/12 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 @MapperScan和@ComponentScan使用问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

報錯如下


原因:當@MapperScan和@ComponentScan一起使用時,項目啟動時掃描包會發生沖突,找不到swagger配置類的包和mapper接口的包

解決辦法:@MapperScan和@ComponentScan可以一起使用。

改為@MapperScan(basePackages = {})的形式。

或者只使用@MapperScan()去掃描mapper包,讓項目啟動自己去掃描swagger配置類的包

課外拓展:

@MapperScan

1.首先了解@Mapper
在持久層的接口上添加@Mapper注解,編譯后會生成相應的接口實現類,但由于要在每個接口上都進行配置,所以產生了@MapperScan。
2.@MapperScan
指定要編譯成接口實現類的包路徑,在編譯完成后這個包下的所有接口都會生成相應的接口實現類。

@ComponentScan

1.會自動掃描包路徑下的@Controller、@Service、@Repository、@Component類,符合掃描規則的類會裝配到spring容器中。
2.@MapperScan和@ComponentScan可以同時使用
如果@MapperScan和@ComponentScan掃描的是同一路徑會產生錯誤,所以
@MapperScan(basePackages = { "com" }) @SpringBootApplication

項目場景:

最近在使用SpringBoot搭建項目,使用了Mybatis的generator自動生成mapper和mapper.xml。在mapper注入的時候,發現自己對mapperscan、mapper、componentscan注解的理解不是很深入,因此,在這里記錄一下。

問題描述:

SpringBoot項目啟動后,發現mapper并沒有注入到容器中。分析原因是在mapper類中少加了mapper注解,或者是主啟動類中沒有加mapperscan注解。其實歸根結底還是因為對于這三個注解理解不深。


三種注解區別:

@ComponentScan注解

ComponentScan就是告訴Spring從哪里找到bean Spring會在應用主程序所在的包及其子包下進行全局掃描,把對應的bean注入到容器中,這里面的bean包括service mapper resposioty controller 所以在springboot程序中如果有mapper注解的話 就不用再加mapperscan注解,springboot注解自帶componentscan,會掃描到。

@MapperScan注解

@Mapper注解可以在編譯之后生產對應的接口實現類,如果要每個接口都編程實現類,需要在每個接口上加上Mapper注解,比較麻煩,解決這個問題用的是@MapperScan注解,mapperscan注解后面可以加value指定要掃描的包,即可實現mapper的注入。

其實MapperScan完成了兩件事情:

根據配置的路徑進行mapper.java的掃描 此處掃描到的就是mapper下的java文件為掃描到的mapper進行注冊BeanDefinition。

總結

以上是生活随笔為你收集整理的@MapperScan和@ComponentScan使用问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。