欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

關(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)問(wèn)題,出現(xiàn)了一個(gè)被Spring容器管理的Bean被創(chuàng)建了2次的現(xiàn)象。在此記錄下解決的過(guò)程,方便后續(xù)查閱。

改動(dòng)前

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

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

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

改動(dòng)后

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

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

<context:component-scan>的使用說(shuō)明

在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>

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

<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在上面并沒(méi)有指定,默認(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沒(méi)有起到作用,只要把use-default-filter設(shè)置成false就可以了。這樣就可以避免在base-packeage配置多個(gè)包名這種不是很優(yōu)雅的方法來(lái)解決這個(gè)問(wèn)題了。

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

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

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

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

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

相關(guān)文章

  • java中的按位與(&)用法說(shuō)明

    java中的按位與(&)用法說(shuō)明

    這篇文章主要介紹了java中的按位與(&)用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-08-08
  • Java設(shè)計(jì)模式之中介者模式的實(shí)現(xiàn)方式

    Java設(shè)計(jì)模式之中介者模式的實(shí)現(xiàn)方式

    Java中介者模式是一種行為型設(shè)計(jì)模式,它通過(guò)一個(gè)中介者對(duì)象來(lái)協(xié)調(diào)多個(gè)對(duì)象之間的交互,降低對(duì)象之間的耦合度,提高系統(tǒng)的可維護(hù)性和可擴(kuò)展性。本文將介紹該設(shè)計(jì)模式的原理、使用場(chǎng)景和實(shí)現(xiàn)方法
    2023-04-04
  • IDEA2020 1.1中Plugins加載不出來(lái)的問(wèn)題及解決方法

    IDEA2020 1.1中Plugins加載不出來(lái)的問(wèn)題及解決方法

    這篇文章主要介紹了IDEA2020 1.1中Plugins加載不出來(lái)的問(wèn)題,本文還給大家提到了IDEA 2020.1.1 找不到程序包和符號(hào)的問(wèn)題,感興趣的朋友跟隨小編一起看看吧
    2020-06-06
  • 一文搞懂Spring中的Bean作用域

    一文搞懂Spring中的Bean作用域

    scope用來(lái)聲明容器中的對(duì)象所應(yīng)該處的限定場(chǎng)景或者說(shuō)該對(duì)象的存活時(shí)間,即容器在對(duì)象進(jìn)入其 相應(yīng)的scope之前,生成并裝配這些對(duì)象,在該對(duì)象不再處于這些scope的限定之后,容器通常會(huì)銷毀這些對(duì)象,這篇文章主要介紹了Spring中的Bean作用域,需要的朋友可以參考下
    2022-06-06
  • spring?@value無(wú)法取值多個(gè)properties文件的解決

    spring?@value無(wú)法取值多個(gè)properties文件的解決

    這篇文章主要介紹了spring?@value無(wú)法取值多個(gè)properties文件的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • IDEA最新版2020.1的maven工程本地依賴倉(cāng)庫(kù)無(wú)法使用問(wèn)題(已解決)

    IDEA最新版2020.1的maven工程本地依賴倉(cāng)庫(kù)無(wú)法使用問(wèn)題(已解決)

    這篇文章主要介紹了IDEA最新版2020.1的maven工程本地依賴倉(cāng)庫(kù)無(wú)法使用問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • java中有無(wú)參數(shù)和返回值的方法詳解

    java中有無(wú)參數(shù)和返回值的方法詳解

    這篇文章主要介紹了java中有無(wú)參數(shù)和返回值的方法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • java實(shí)現(xiàn)題目以及選項(xiàng)亂序的方法實(shí)例

    java實(shí)現(xiàn)題目以及選項(xiàng)亂序的方法實(shí)例

    這篇文章主要給大家介紹了關(guān)于java實(shí)現(xiàn)題目以及選項(xiàng)亂序的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • JavaWeb中的Cookie和Session解讀

    JavaWeb中的Cookie和Session解讀

    這篇文章主要介紹了JavaWeb中的Cookie和Session解讀,Cookie是servlet發(fā)送到Web瀏覽器的少量信息,該信息由瀏覽器保存,然后發(fā)送回服務(wù)器,一般情況下,Cookie是以鍵值對(duì)進(jìn)行表示的,Cookie的值可以唯一地標(biāo)識(shí)客戶端,因此Cookie常用于會(huì)話管理,需要的朋友可以參考下
    2023-10-10
  • 詳解關(guān)于Spring Cloud 框架熱部署的方法

    詳解關(guān)于Spring Cloud 框架熱部署的方法

    本篇文章主要介紹了詳解關(guān)于Spring Cloud 框架熱部署的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11

最新評(píng)論