關(guān)于 context:component-scan 的一次使用經(jīng)驗(yàn)

問(wèn)題是這樣的馍刮,我按照正常的配置文件結(jié)構(gòu)配置信夫,然后每次啟動(dòng)起來(lái)都提示找不到 Controller ,反反復(fù)復(fù)看配置文件沒(méi)發(fā)現(xiàn)問(wèn)題卡啰,依賴也正確静稻,甚至連數(shù)據(jù)庫(kù)連接池都換了,也沒(méi)解決 Controller Not Found 的問(wèn)題匈辱。振湾。。

后來(lái)過(guò)了一天我想了一下亡脸,既然是找不到 Controller 押搪,那么就是 Controller 的類沒(méi)被找到,那么如果沒(méi)被找到的話浅碾,是不是掃描的時(shí)候出了問(wèn)題呢大州?

我原來(lái)的配置是這樣的

<context:component-scan base-package="cn.lncsa.controller.*"/>

然后我試了一下增加了 Controller 的 filter

<context:component-scan base-package="cn.lncsa.controller.*">
    <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>

問(wèn)題并沒(méi)有被解決。

后來(lái)觀察垂谢,發(fā)現(xiàn) base-package 參數(shù)是 "cn.lncsa.controller.*"厦画,然后回頭對(duì)比了一下按照教程做的能正常運(yùn)行的 Helloworld ,是 "net.catten.mvc.*" 而不是"net.catten.mvc.controller.*"滥朱,我在想是不是這個(gè)通配符的問(wèn)題根暑,于是便試著把 base-package 改成 "cn.lncsa.controller"

<context:component-scan base-package="cn.lncsa.controller"/>

問(wèn)題解決。徙邻。排嫌。。

然后在想為什么呢缰犁?

是這樣的淳地,base-package 指的是掃描器從那個(gè)包開始掃描, "cn.lncsa.controller.*" 指的是掃描 controller 包下面的任何包民鼓,也就是說(shuō) * 通配符是改變了掃描基于的包了薇芝,不再是 controller 而是 controller 里面的各個(gè)子包。而我的 Controller 類是放在這個(gè)包下的丰嘉,掃的是根包里的子包的類而不是根包里的類夯到,當(dāng)然就搜索不到 Controller 了。

那么這個(gè)錯(cuò)誤的配置除了上面這么改還能怎么改呢饮亏?

<context:component-scan base-package="cn.lncsa.*">
    <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>

這樣改就好了耍贾。雖然方法不同但是原理都是更改掃描的根包阅爽。第一種方法是直接明確地指出掃描的地方。第二種方法是掃描 cn.lncsa 里面的子包荐开,但是增加 include-filter付翁, 使其只掃描 Controller 類。

當(dāng)然我的習(xí)慣是使用第一種晃听。

還有需要注意的是百侧,因?yàn)?SpringMVC 一般是和 Spring 共用, 所以會(huì)有重復(fù)掃描類的問(wèn)題能扒。我們的 Controller 是交給 SpringMVC 所屬的容器管理的佣渴,所以應(yīng)該讓主要的 Spring IOC 容器忽略掉這些 Controller。不然會(huì)造成重復(fù)掃描初斑,生成重復(fù)的對(duì)象在兩個(gè) IOC 容器里辛润。

所以除了配置 spring-mvc 的 applicationContext 以外,也要在主要的 applicationContxt 里配置掃描器见秤。

<context:component-scan base-package="cn.lncsa">
    <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>

增加 exclude-filter 就能讓主要的 IOC 容器忽略掉這些 Controller

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末砂竖,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子鹃答,更是在濱河造成了極大的恐慌乎澄,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件测摔,死亡現(xiàn)場(chǎng)離奇詭異三圆,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)避咆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)修噪,“玉大人查库,你說(shuō)我怎么就攤上這事』魄恚” “怎么了樊销?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)脏款。 經(jīng)常有香客問(wèn)我围苫,道長(zhǎng),這世上最難降的妖魔是什么撤师? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任剂府,我火速辦了婚禮,結(jié)果婚禮上剃盾,老公的妹妹穿的比我還像新娘腺占。我一直安慰自己淤袜,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布衰伯。 她就那樣靜靜地躺著铡羡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪意鲸。 梳的紋絲不亂的頭發(fā)上烦周,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音怎顾,去河邊找鬼读慎。 笑死,一個(gè)胖子當(dāng)著我的面吹牛杆勇,可吹牛的內(nèi)容都是我干的贪壳。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼蚜退,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼闰靴!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起钻注,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤蚂且,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后幅恋,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體杏死,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年捆交,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了淑翼。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡品追,死狀恐怖玄括,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情肉瓦,我是刑警寧澤遭京,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站泞莉,受9級(jí)特大地震影響哪雕,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜鲫趁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一斯嚎、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦孝扛、人聲如沸列吼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)寞钥。三九已至,卻和暖如春陌选,著一層夾襖步出監(jiān)牢的瞬間理郑,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工咨油, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留您炉,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓役电,卻偏偏與公主長(zhǎng)得像赚爵,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子法瑟,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理冀膝,服務(wù)發(fā)現(xiàn),斷路器霎挟,智...
    卡卡羅2017閱讀 134,601評(píng)論 18 139
  • 一. Java基礎(chǔ)部分.................................................
    wy_sure閱讀 3,795評(píng)論 0 11
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法窝剖,類相關(guān)的語(yǔ)法,內(nèi)部類的語(yǔ)法酥夭,繼承相關(guān)的語(yǔ)法赐纱,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚_t_閱讀 31,587評(píng)論 18 399
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,748評(píng)論 6 342
  • 當(dāng)我沉浸在春暖花開的喜悅中熬北,早早地把羽絨衣收好時(shí)疙描,完全沒(méi)有意識(shí)到冬天在角落里正虎視眈眈。稍不留神讶隐,他就卷土重來(lái)了淫痰,...
    小心眼和壞脾氣閱讀 170評(píng)論 0 0