2011-08-05 24 views
7

我已經開始使用Spring 3開發一個新項目,並使用註解。我喜歡我可以連接我的類來獲得注入的依賴關係,但是我知道在基礎包中啓動context:component-scan是一種不好的做法。在Spring 3中組織類進行組件掃描的智能方法是什麼?

我使用的是DispatcherServlet,它有自己的xml配置文件。在那也是一個context:component-scan。當我第一次開始學習Spring時,我在組件掃描中發生重疊,並且多次創建bean。我想避免這種情況。

什麼是組織我的軟件包或組件掃描以覆蓋所有bean而不重複的好方法?

目前我有包這樣的:

my.package.controller 
my.package.dao 
my.package.entity 
my.package.service 
my.package.util 

如果我在所有那些包裝的豆再好像容易的出路將是把<context:component-scan base-package="my.package"></context:component-scan>到applicationContext.xml中,並用它做。

最好是在調度程序的xml中掃描my.package.controller,並在applicationContext.xml中掃描其他(不包括my.package.controller)?

或者我應該將所有註釋過的課程安排在一個區域,而其他所有課程都安排在另一個區域?喜歡的東西:

my.package.spring.controller 
my.package.spring.dao 
my.package.spring.entity 
my.package.spring.service 
my.package.spring.util 
my.package.notannotated 
my.package.notannotated2 

我使用@Autowired來記錄添加到最如果不是所有我的課,所以我不知道我會不會被註釋的所有類。

我討厭卡在配置上......我寧願被困在代碼中,所以如果有人可以提供任何提示,我會隨時歡迎他們。

謝謝!

回答

12

是 - 在你的主背景掃描一切,除了控制器

<context:component-scan base-package="my.package"> 
    <context:exclude-filter type="regex" expression="my\.package\.controller.*"/> 
</context:component-scan> 

,並在你的DispatcherServlet中只掃描控制器封裝。

+0

哇,這比我想象的容易,謝謝。我的包裝設置看起來是否合理? – Paul

+0

對我來說很好,這幾乎就是我所做的。 – sourcedelica