淺談@mapper引入不到引入的是@MapperScan的問題
兩種防水都可以,但是使用方式不同。
@mapper需要mybatis和mybatis-spring的版本足夠的高才可以。
不然導(dǎo)入不到@mapper。
補(bǔ)充知識(shí):關(guān)于MyBatis的@Mapper和@MapperScan注解的一點(diǎn)思考
最近有空回顧mybatis,想起@Mapper注解一直沒弄明白是干嘛的,代碼上的注釋寫的很簡(jiǎn)單(Marker interface for MyBatis mappers),開發(fā)過程中也沒用到,但網(wǎng)上各種資料偶有出現(xiàn)他的身影。問了度娘,都沒講清楚,我決定自己思考下這個(gè)問題,看看他究竟是干嘛用的。
1、來源
Mapper來自mybatis-3.5.3.jar包
MapperScan來自mybatis-spring-2.0.3.jar包
2、作用
Mapper注解沒有被任何類接口引用,看不出來有何作用
MapperScan注解被MapperScannerRegistrar的registerBeanDefinitions方法所引用,目的是將basePackages定義的所有包下的所有接口生成一個(gè)org.apache.ibatis.binding.MapperProxy代理bean,這樣就可以用@Autowired注解進(jìn)行裝配使用了。
3、疑問
Mapper注解沒有被任何類使用,那他用來干嘛的,MapperScan用來掃描定義包下的所有的接口,無論這個(gè)接口你的設(shè)計(jì)目的是用來干嘛的,他都會(huì)生成一個(gè)bean(經(jīng)測(cè)試,@Service實(shí)現(xiàn)的接口和@FeignClient注解的接口,即使他已經(jīng)都相關(guān)的程序注冊(cè)了一個(gè)bean,MapperScan還是會(huì)將這些接口再注冊(cè)一個(gè)bean,導(dǎo)致出錯(cuò))。
如此不合理的地方,到底是哪里出現(xiàn)問題?
4、我的思考
帶著上面的問題,我又在重新查看了@MapperScan,發(fā)現(xiàn)里面有個(gè)annotationClass,默認(rèn)值是Annotation.classs。
Class<? extends Annotation> annotationClass() default Annotation.class;
假若我們的注解如此寫呢,是不是能解決上面的2個(gè)問題。
@MapperScan(basePackages = "com.zhi.test", annotationClass = Mapper.class)
經(jīng)驗(yàn)證,Mapper找到了合理的使用,一些無關(guān)的接口也不再注冊(cè)為一個(gè)bean。
以上這篇淺談@mapper引入不到引入的是@MapperScan的問題就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
spring cloud alibaba Nacos 注冊(cè)中心搭建過程詳解
這篇文章主要介紹了spring cloud alibaba Nacos 注冊(cè)中心搭建過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10Spring Task定時(shí)任務(wù)的配置和使用詳解
本篇文章主要介紹了Spring Task定時(shí)任務(wù)的配置和使用詳解,實(shí)例分析了Spring Task定時(shí)任務(wù)的配置和使用的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-04-04java web開發(fā)中大量數(shù)據(jù)導(dǎo)出Excel超時(shí)(504)問題解決
開發(fā)測(cè)試時(shí)候?qū)霐?shù)據(jù)遇到大數(shù)據(jù)導(dǎo)入的問題,整理了下,需要的朋友可以參考下2017-04-04SpringBoot使用jasypt加解密密碼的實(shí)現(xiàn)方法(二)
這篇文章主要介紹了SpringBoot使用jasypt加解密密碼的實(shí)現(xiàn)方法(二),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10Java中實(shí)現(xiàn)多線程關(guān)鍵詞整理(總結(jié))
這篇文章主要介紹了Java中實(shí)現(xiàn)多線程關(guān)鍵詞整理,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-05-05java遍歷http請(qǐng)求request的所有參數(shù)實(shí)現(xiàn)方法
下面小編就為大家?guī)硪黄猨ava遍歷http請(qǐng)求request的所有參數(shù)實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-09-09Intellij Idea部署OpenCV 4.0.0環(huán)境
這篇文章主要為大家詳細(xì)介紹了Intellij Idea部署OpenCV 4.0.0環(huán)境,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-07-07使用 Spring Boot 2.0 + WebFlux 實(shí)現(xiàn) RESTful API功能
什么是 Spring WebFlux, 它是一種異步的, 非阻塞的, 支持背壓(Back pressure)機(jī)制的Web 開發(fā)框架.下面通過本文給大家介紹使用 Spring Boot 2.0 + WebFlux 實(shí)現(xiàn) RESTful API功能,需要的朋友參考下吧2018-01-01