国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

答疑解惑:解釋在Mybatis-Spring下@Mapper與@MapperScan為何不能同時(shí)生效以及實(shí)現(xiàn)動(dòng)態(tài)條件注冊(cè)Mapper接口

這篇具有很好參考價(jià)值的文章主要介紹了答疑解惑:解釋在Mybatis-Spring下@Mapper與@MapperScan為何不能同時(shí)生效以及實(shí)現(xiàn)動(dòng)態(tài)條件注冊(cè)Mapper接口。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

若項(xiàng)目中使用了@MapperScan注解后,則@Mapper注解不再生效,
原因是:@MapperScan注解 會(huì)執(zhí)行@Import(MapperScannerRegistrar.class),而MapperScannerRegistrar又會(huì)注冊(cè)MapperScannerConfigurer BEAN,在MapperScannerConfigurer BEAN中會(huì)完成基于配置的包目錄掃描注冊(cè)所有mapper interface代理BEAN,而@Mapper注解的生效是由org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration.MapperScannerRegistrarNotFoundConfiguration 配置BEAN類執(zhí)行@Import(AutoConfiguredMapperScannerRegistrar.class),在AutoConfiguredMapperScannerRegistrar中會(huì)掃描所有@Mapper注解的mapper interface并注冊(cè)為代理BEAN,但在執(zhí)行@Import(AutoConfiguredMapperScannerRegistrar.class)時(shí)有一個(gè)前提,那就是@ConditionalOnMissingBean({ MapperFactoryBean.class, MapperScannerConfigurer.class })【即:在沒有MapperFactoryBean 或 MapperScannerConfigurer】時(shí)才會(huì)執(zhí)行,由于MapperScannerRegistrarNotFoundConfiguration 是MybatisAutoConfiguration 配置BEAN的子類,所以MapperScannerRegistrarNotFoundConfiguration 會(huì)晚于@MapperScan標(biāo)記的頂級(jí)類,故正常情況下一旦使用了@MapperScan注解后,由于MapperScannerConfigurer BEAN已注冊(cè),那么MapperScannerRegistrarNotFoundConfiguration 上的@Import(AutoConfiguredMapperScannerRegistrar.class)將不會(huì)被執(zhí)行。

另外要實(shí)現(xiàn)動(dòng)態(tài)條件注冊(cè)Mapper接口,我們只需要在mapper interface上加上@Conditional(...) 條件注解即可,
原理是:不論是@MapperScan 或是@Mapper 最終都是使用ClassPathMapperScanner.scan完成掃描并注冊(cè)成BEAN的,而在scan過程中又會(huì)支持較多的TypeFilter,以及在確定候選組件時(shí)(org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider#scanCandidateComponents)又會(huì)進(jìn)行條件判斷(即:org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider#isConditionMatch),判斷是否可以跳過(即:org.springframework.context.annotation.ConditionEvaluator#shouldSkip),在shouldSkip方法中會(huì)又會(huì)判斷是否為Conditional注解,若是則會(huì)執(zhí)行Condition#matches 進(jìn)行匹配,若返回true則表示符合要求不跳過(即:候選的BEAN),否則跳過,如此即實(shí)現(xiàn)了動(dòng)態(tài)條件注冊(cè)Mapper接口代理BEAN的功能。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-667182.html

到了這里,關(guān)于答疑解惑:解釋在Mybatis-Spring下@Mapper與@MapperScan為何不能同時(shí)生效以及實(shí)現(xiàn)動(dòng)態(tài)條件注冊(cè)Mapper接口的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【官方中文文檔】Mybatis-Spring #搭配 Spring Boot

    請(qǐng)查看 MyBatis Spring-boot-starter 子項(xiàng)目獲取更多信息。

    2024年02月11日
    瀏覽(32)
  • spring5源碼篇(9)——mybatis-spring整合原理

    spring5源碼篇(9)——mybatis-spring整合原理

    spring-framework 版本:v5.3.19 spring和mybatis的整合無(wú)非主要就是以下幾個(gè)方面: 1、SqlSessionFactory怎么注入? 2、Mapper代理怎么注入? 3、為什么要接管mybatis事務(wù)? 在mybatis-spring中,定義了一個(gè)新的factoryBean——SqlSessionFactoryBean,我們將其注入到spring容器即可。 其實(shí)也不難猜到,這

    2024年02月03日
    瀏覽(25)
  • 【官方中文文檔】Mybatis-Spring #注入映射器

    與其在數(shù)據(jù)訪問對(duì)象(DAO)中手工編寫使用 SqlSessionDaoSupport 或 SqlSessionTemplate 的代碼,還不如讓 Mybatis-Spring 為你創(chuàng)建一個(gè)線程安全的映射器,這樣你就可以直接注入到其它的 bean 中了: 注入完畢后,映射器就可以在你的應(yīng)用邏輯代碼中使用了: 注意代碼中并沒有任何的對(duì)

    2024年02月11日
    瀏覽(23)
  • 【官方中文文檔】Mybatis-Spring #使用 SqlSession

    在 MyBatis 中,你可以使用 SqlSessionFactory 來(lái)創(chuàng)建 SqlSession 。 一旦你獲得一個(gè) session 之后,你可以使用它來(lái)執(zhí)行映射了的語(yǔ)句,提交或回滾連接,最后,當(dāng)不再需要它的時(shí)候,你可以關(guān)閉 session。 使用 MyBatis-Spring 之后,你不再需要直接使用 SqlSessionFactory 了,因?yàn)槟愕?bean 可以被

    2024年02月11日
    瀏覽(30)
  • Spring(九) - 解惑 spring 嵌套事務(wù).2

    ? ? 1. 事務(wù)傳播特性? ? ?????????在所有使用 spring 的應(yīng)用中, 聲明式事務(wù)管理可能是使用率最高的功能了, 但是, 從我觀察到的情況看,絕大多數(shù)人并不能深刻理解事務(wù)聲明中不同事務(wù)傳播屬性配置的的含義, 讓我們來(lái)看一下 TransactionDefinition 接口中的定義 Java代碼? 我們可

    2024年02月14日
    瀏覽(19)
  • 基于uniapp的微信小程序spring boot商品進(jìn)銷存儲(chǔ)系統(tǒng)[源碼+文檔+遠(yuǎn)程+答疑

    基于uniapp的微信小程序spring boot商品進(jìn)銷存儲(chǔ)系統(tǒng)[源碼+文檔+遠(yuǎn)程+答疑

    ?網(wǎng)站介紹:?本網(wǎng)站專注專注于計(jì)算機(jī)技術(shù)領(lǐng)域的畢業(yè)設(shè)計(jì)輔導(dǎo),提供JAVA、微信小程序、Python、APP、PHP、微服務(wù)、NET等畢設(shè)項(xiàng)目的定制和成品服務(wù)!????????? ?IT實(shí)戰(zhàn)營(yíng)站長(zhǎng),擁有10年軟件相關(guān)系統(tǒng)架構(gòu)及教學(xué)經(jīng)驗(yàn),Java、大數(shù)據(jù)培訓(xùn)講師,曾任公司技術(shù)總監(jiān);其與團(tuán)隊(duì)

    2024年02月21日
    瀏覽(161)
  • Spring Boot + RabbitMQ 配置參數(shù)解釋

    spring.rabbitmq.host: 服務(wù)Host spring.rabbitmq.port: 服務(wù)端口 spring.rabbitmq.username: 登陸用戶名 spring.rabbitmq.password: 登陸密碼 spring.rabbitmq.virtual-host: 連接到rabbitMQ的vhost spring.rabbitmq.addresses: 指定client連接到的server的地址,多個(gè)以逗號(hào)分隔(優(yōu)先取addresses,然后再取host) spring.rabbitmq.requested

    2024年01月24日
    瀏覽(17)
  • 詳細(xì)解釋一下Spring是如何解決循環(huán)依賴問題的

    詳細(xì)解釋一下Spring是如何解決循環(huán)依賴問題的

    我們都知道,如果在代碼中,將 兩個(gè)或多個(gè)Bean互相之間持有對(duì)方的引用就會(huì)發(fā)生循環(huán)依賴。循環(huán)的依賴將會(huì)導(dǎo)致注入死循環(huán) ,這是Spring發(fā)生循環(huán)依賴的原因 1. 互相依賴: A依賴B , B依賴A , 他們之間形成了循環(huán)依賴 2. 間接依賴: A依賴B ,B依賴C , C又依賴A,形成了循環(huán)依

    2024年02月09日
    瀏覽(24)
  • 解鎖Spring Boot中的設(shè)計(jì)模式—02.解釋器模式:探索【解釋器模式】的奧秘與應(yīng)用實(shí)踐!

    解鎖Spring Boot中的設(shè)計(jì)模式—02.解釋器模式:探索【解釋器模式】的奧秘與應(yīng)用實(shí)踐!

    解釋器模式(Interpreter Pattern)是一種行為設(shè)計(jì)模式,它用于定義語(yǔ)言的文法,并且解釋語(yǔ)言中的表達(dá)式。在Java中,解釋器模式可以用于構(gòu)建解釋器以解析特定的語(yǔ)言或表達(dá)式,如數(shù)學(xué)表達(dá)式、查詢語(yǔ)言等。 優(yōu)點(diǎn): 靈活性: 解釋器模式可以 靈活地添加新的表達(dá)式和規(guī)則 ,因

    2024年02月19日
    瀏覽(96)
  • 35、解釋一下spring支持的幾種bean的作用域

    singleton: 默認(rèn),每個(gè)容器中只有一個(gè)bean的實(shí)例,單例的模式由BeanFactory自身來(lái)維護(hù)。該對(duì)象的生命周期是與Spring IOC容器一致的 (但在第一次被注入時(shí)才會(huì)創(chuàng)建)。 prototype:為每一個(gè)bean請(qǐng)求提供一個(gè)實(shí)例。在每次注入時(shí)都會(huì)創(chuàng)建一個(gè)新的對(duì)象· request: bean被定義為在每個(gè)HTTP請(qǐng)求中

    2024年02月16日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包