在xml配置了這個標籤後,spring可以自動去掃描base-pack下面或者子包下面的java文件,如果掃描到有@Component @Controller@Service等這些註解的類,則把這些類註冊為bean
注意:如果配置了
1.
2.
在說明這兩個子標籤前,先說一下
Use-default-filter此時為true那麼會對base-package包或者子包下的所有的進行java類進行掃描,並把匹配的java類註冊成bean。
可以發現這種掃描的粒度有點太大,如果你只想掃描指定包下面的Controller,該怎麼辦?此時子標籤
這樣就會只掃描base-package指定下的有@Controller下的java類,並註冊成bean。
但是因為use-dafault-filter在上面並沒有指定,默認就為true,所以當把上面的配置改成如下所示的時候,就會產生與你期望相悖的結果(注意base-package包值得變化)
此時,spring不僅掃描了@Controller,還掃描了指定包所在的子包service包下註解@Service的java類
此時指定的include-filter沒有起到作用,只要把use-default-filter設置成false就可以了。這樣就可以避免在base-packeage配置多個包名這種不是很優雅的方法來解決這個問題了。
另外在我參與的項目中可以發現在base-package指定的包中有的子包是不含有註解了,所以不用掃描,此時可以指定
Use-dafault-filters=”false”的情況下:
閱讀更多 迦藍baby書解析 的文章