一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Spring中component-scan標(biāo)簽的use-default-filters屬性的作用以及...

 股海無涯苦作舟 2021-11-11

背景

    我們在Spring+SpringMVC+Mybatis的集成開發(fā)中,經(jīng)常會遇到事務(wù)配置不起作用等問題,那么本文就來分析下由于spring和springmvc父子容器關(guān)系導(dǎo)致出現(xiàn)這種問題可能的原因以及解決方式.

問題分析及原理窺探

首先看下項目結(jié)構(gòu)

圖片

若我們在spring-mvc.xml文件中進(jìn)行如下配置,這種方式會成功掃描到controller包下所有帶有@Controller注解的Bean,不會掃描帶有@Service/@Repository注解的Bean,是正確的:圖片

但是如下方式,不僅僅掃描到帶有@Controller注解的Bean,還掃描到帶有@Service、@Repository注解的Bean,可能造成事務(wù)不起作用等問題。圖片

這是因為什么呢?下面我們從spring源碼來進(jìn)行分析.

  1. spring標(biāo)簽<context:component-scan>會交給org.springframework.context.config.ContextNamespaceHandler處理。

  2. 在org.springframework.context.config.ContextNamespaceHandler中有如下源碼:

    圖片

  3. ComponentScanBeanDefinitionParser會讀取配置文件信息并組裝成org.springframework.context.annotation.ClassPathBeanDefinitionScanner進(jìn)行處理。

  4. 如果沒有配置<context:component-scan>的use-default-filters屬性,則默認(rèn)為true,在創(chuàng)建ClassPathBeanDefinitionScanner時會根據(jù)use-default-filters是否為true來調(diào)用如下代碼:

    圖片

    從以上源碼我們可以看出默認(rèn)ClassPathBeanDefinitionScanner會自動注冊對@Component、@ManagedBean、@Named注解的Bean進(jìn)行掃描。

  5. 在進(jìn)行掃描時會通過include-filter/exclude-filter來判斷你的Bean類是否是合法的:圖片

從以上源碼可看出:掃描時首先通過exclude-filter 進(jìn)行黑名單過濾,然后通過include-filter 進(jìn)行白名單過濾,否則默認(rèn)排除。

結(jié)論

    若我們在spring-mvc.xml中進(jìn)行如下配置:圖片    則SpringMVC容器不僅僅掃描并注冊帶有@Controller注解的Bean,而且還掃描并注冊了帶有@Component的子注解@Service、@Reposity的Bean。因為use-default-filters默認(rèn)為true。所以如果不需要默認(rèn)的,則use-default-filters=“false”禁用掉。

       當(dāng)我們進(jìn)行上面的配置時,SpringMVC容器會把service、dao層的bean重新加載,從而造成新加載的bean覆蓋了老的bean,但事務(wù)的AOP代理沒有配置在spring-mvc.xml配置文件中,造成事務(wù)失效。解決辦法是:在spring-mvc.xml配置文件中的context:component-scan標(biāo)簽中使用use-default-filters=“false”禁用掉默認(rèn)的行為。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    久久本道综合色狠狠五月| 好东西一起分享老鸭窝| 久久热麻豆国产精品视频| 我的性感妹妹在线观看| 国产亚洲精品一二三区| 欧美一级特黄特色大色大片| 国产精品一区二区日韩新区| 91国自产精品中文字幕亚洲| 超薄肉色丝袜脚一区二区| 69久久精品亚洲一区二区| 高清亚洲精品中文字幕乱码| 亚洲中文字幕在线观看黑人| 91在线爽的少妇嗷嗷叫| 热久久这里只有精品视频| 亚洲欧美日韩中文字幕二欧美| 国产盗摄精品一区二区视频| 九九热精彩视频在线免费| 国产激情一区二区三区不卡| 国产又猛又黄又粗又爽无遮挡| 青青免费操手机在线视频| 国产午夜福利一区二区| 欧美日韩乱码一区二区三区| 日本深夜福利视频在线| 成人三级视频在线观看不卡| 久久福利视频在线观看| 视频一区二区 国产精品| 久久永久免费一区二区| 国产成人精品久久二区二区| 欧美视频在线观看一区| 亚洲熟妇av一区二区三区色堂| 99精品国产一区二区青青| 四季精品人妻av一区二区三区| 欧美激情床戏一区二区三| 熟女乱一区二区三区四区| 亚洲黑人精品一区二区欧美| 99国产一区在线播放| 人人妻人人澡人人夜夜| 一区二区三区亚洲天堂| 亚洲精品一区二区三区免| 黑人巨大精品欧美一区二区区| 中国一区二区三区人妻|