2011-09-05 40 views
2

好吧,這可能聽起來像一個奇怪的問題,但這裏有一個問題:我們有一個基於Spring的應用程序,它有不同的「設置」模式。在一種模式下,它需要使用額外的服務bean(連接到外部資源),而在另一種模式下則不需要。Spring:什麼是在啓動時配置哪些服務bean應該被初始化的最佳方式?

我現在想要的是阻止這些bean在一種設置模式下不需要初始化的方式,我唯一遇到的就是使用標準的applicationContext.xml方式處理(即沒有@Service註釋),並以某種方式在這些bean中使用@Autowired(required=false),這取決於(可選)組件。

這是進一步(甚至可能)的有效方法嗎?我真的不想從基於註釋的佈線的簡單性中鬆脫太多,並希望儘可能少地寫XML配置...

回答

2

如果您可以使用Spring 3.1,則可以使用一個名爲Profiles的新功能來完成您想要的操作。查看this blog post,其中解釋瞭如何使用配置文件和基於註釋的代碼。

+0

非常非常有幫助!這正是我正在尋找的!我想它的時間升級到3.1 ... –

1

一種方法是爲不同的「模式」分隔不同的類,在他們自己的包裹裏。然後,您可以在應用程序上下文xml中使用<context:component-scan>元素來控制掃描哪些軟件包,哪些不是。或者使用包含/排除過濾器(請參閱http://static.springsource.org/spring/docs/2.5.x/reference/beans.html#beans-scanning-filters)。這樣,您可以基於您自己的自定義註釋來定義排除過濾器。

+0

是的,對,在掃描過程中使用applicationContext.xml中的排除過濾器是另一種選擇,但如果有問題的服務不在公共包中,那麼它會相當模糊,而在我們的例子中,不幸的是。 –

相關問題