最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關(guān)于SpingMVC的<context:component-scan>包掃描踩坑記錄

 更新時(shí)間:2022年03月21日 10:43:16   作者:zeng1994  
這篇文章主要介紹了關(guān)于SpingMVC的<context:component-scan>包掃描踩坑記錄,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

<context:component-scan>包掃描的坑

公司項(xiàng)目配置的Spring項(xiàng)目的包掃描有點(diǎn)問題,出現(xiàn)了一個(gè)被Spring容器管理的Bean被創(chuàng)建了2次的現(xiàn)象。在此記錄下解決的過程,方便后續(xù)查閱。

改動(dòng)前

容器啟動(dòng)監(jiān)聽器中會(huì)掃描全部包,創(chuàng)建實(shí)例 

SpringMVC配置文件也會(huì)掃描全部包,創(chuàng)建實(shí)例

產(chǎn)生的問題:加了注解的類的實(shí)例都創(chuàng)建了2個(gè)

改動(dòng)后

容器啟動(dòng)監(jiān)聽器里面負(fù)責(zé)非Controller層bean的創(chuàng)建

SpingMVC配置文件里只負(fù)責(zé)Controller層bean的創(chuàng)建

<context:component-scan>的使用說明

在xml配置了這個(gè)標(biāo)簽后,spring可以自動(dòng)去掃描base-package下面或者子包下面的java文件,如果掃描到有@Component @Controller@Service等這些注解的類,則把這些類注冊(cè)為bean

注意:如果配置了<context:component-scan>那么<context:annotation-config/>標(biāo)簽就可以不用再xml中配置了,因?yàn)榍罢甙撕笳摺?/p>

<context:annotation-config/>提供了兩個(gè)子標(biāo)簽

<context:include-filter>
<context:exclude-filter>

再說明這兩個(gè)子標(biāo)簽前,先說一下<context:component-scan>有一個(gè)use-default-filters屬性,改屬性默認(rèn)為true,這就意味著會(huì)掃描指定包下的全部的標(biāo)有@Component的類,并注冊(cè)成bean.也就是@Component的子注解@Service,@Reposity等。所以如果僅僅是在配置文件中這么寫

<context:component-scan base-package="tv.huan.weisp.web"/>

use-default-filter此時(shí)為true那么會(huì)對(duì)base-package包或者子包下的所有的進(jìn)行java類進(jìn)行掃描,并把匹配的java類注冊(cè)成bean。

可以發(fā)現(xiàn)這種掃描的粒度有點(diǎn)太大,如果你只想掃描指定包下面的Controller,該怎么辦?此時(shí)子標(biāo)簽context:incluce-filter就起到了用武之地。

如下所示

<context:component-scan base-package="tv.huan.weisp.web .controller"> ?
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/> ??
</context:component-scan> ?

這樣就會(huì)只掃描base-package指定下的有@Controller下的java類,并注冊(cè)成bean

但是因?yàn)閡se-dafault-filter在上面并沒有指定,默認(rèn)就為true,所以當(dāng)把上面的配置改成如下所示的時(shí)候,就會(huì)產(chǎn)生與你期望相悖的結(jié)果(注意base-package包值得變化)

<context:component-scan base-package="tv.huan.weisp.web "> ?
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/> ??
</context:component-scan> ?

此時(shí),spring不僅掃描了@Controller,還掃描了指定包所在的子包service包下注解@Service的java類

此時(shí)指定的include-filter沒有起到作用,只要把use-default-filter設(shè)置成false就可以了。這樣就可以避免在base-packeage配置多個(gè)包名這種不是很優(yōu)雅的方法來解決這個(gè)問題了。

另外在我參與的項(xiàng)目中可以發(fā)現(xiàn)在base-package指定的包中有的子包是不含有注解了,所以不用掃描,此時(shí)可以指定<context:exclude-filter>來進(jìn)行過濾,說明此包不需要被掃描。綜合以上說明

use-dafault-filters=”false”的情況下:

<context:exclude-filter>指定的不掃描,<context:include-filter>指定的掃描

定位問題原因* 根據(jù)原因思考問題解決方案* 實(shí)踐驗(yàn)證方案有效性* 提交驗(yàn)證結(jié)果

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • java利用JEXL實(shí)現(xiàn)動(dòng)態(tài)表達(dá)式編譯

    java利用JEXL實(shí)現(xiàn)動(dòng)態(tài)表達(dá)式編譯

    這篇文章主要介紹了java利用JEXL實(shí)現(xiàn)動(dòng)態(tài)表達(dá)式編譯,系統(tǒng)要獲取多個(gè)數(shù)據(jù)源的數(shù)據(jù),并進(jìn)行處理,最后輸出多個(gè)字段。字段的計(jì)算規(guī)則一般是簡(jiǎn)單的取值最多加一點(diǎn)條件判斷,下面是具體的實(shí)現(xiàn)方法
    2021-04-04
  • Java中的動(dòng)態(tài)代理使用

    Java中的動(dòng)態(tài)代理使用

    這篇文章主要介紹了Java中的動(dòng)態(tài)代理使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • string boot 與 自定義interceptor的實(shí)例講解

    string boot 與 自定義interceptor的實(shí)例講解

    下面小編就為大家分享一篇string boot 與 自定義interceptor的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • 關(guān)于junit測(cè)試需要的依賴

    關(guān)于junit測(cè)試需要的依賴

    這篇文章主要介紹了關(guān)于junit測(cè)試需要的依賴,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Gson中的TypeToken與泛型擦除詳情

    Gson中的TypeToken與泛型擦除詳情

    這篇文章主要介紹了Gson中的TypeToken與泛型擦除詳情,其Gson類提供了toJson()與fromJson()方法,分別用來序列化與反序列化,更多相關(guān)內(nèi)容需要的朋友可以參考一下
    2022-09-09
  • 自主配置數(shù)據(jù)源,mybatis/plus不打印sql日志問題

    自主配置數(shù)據(jù)源,mybatis/plus不打印sql日志問題

    這篇文章主要介紹了自主配置數(shù)據(jù)源,mybatis/plus不打印sql日志問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • 淺談JVM 底層解析 i++和 ++i 區(qū)別

    淺談JVM 底層解析 i++和 ++i 區(qū)別

    這篇文章主要介紹了JVM 底層解析 i++和 ++i 區(qū)別,需要的朋友可以參考下面文章的具體內(nèi)容
    2021-09-09
  • Spring Boot發(fā)送郵件詳解

    Spring Boot發(fā)送郵件詳解

    這篇文章主要為大家詳細(xì)介紹了Spring Boot發(fā)送郵件的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • 基于jenkins實(shí)現(xiàn)發(fā)布node.js項(xiàng)目

    基于jenkins實(shí)現(xiàn)發(fā)布node.js項(xiàng)目

    這篇文章主要介紹了基于jenkins實(shí)現(xiàn)發(fā)布node.js項(xiàng)目,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • Java多線程之徹底搞懂線程池

    Java多線程之徹底搞懂線程池

    熟悉 Java 多線程編程的同學(xué)都知道,當(dāng)我們線程創(chuàng)建過多時(shí),容易引發(fā)內(nèi)存溢出,因此我們就有必要使用線程池的技術(shù)了。想要詳細(xì)了解的同學(xué)可以參考閱讀本文
    2023-03-03

最新評(píng)論

陆河县| 邵东县| 囊谦县| 千阳县| 云霄县| 富宁县| 赞皇县| 商都县| 长汀县| 广昌县| 竹山县| 广丰县| 郴州市| 都江堰市| 沈阳市| 汝阳县| 嘉黎县| 邛崃市| 益阳市| 石门县| 都昌县| 文成县| 莎车县| 屏山县| 定远县| 乐东| 巨鹿县| 沈丘县| 秦安县| 河源市| 神木县| 左权县| 岳阳县| 蒲江县| 和田县| 新巴尔虎右旗| 浏阳市| 白水县| 乌拉特后旗| 松江区| 永兴县|