2012-03-07 36 views
0

我配置每environemnt我的春天應用程序,我來到了以下問題:春天每環境配置,其中PropertyPlaceholder是不夠的

只要環境的變化只是bean的構造函數/屬性值我很好的利用PropertyPlaceholderConfigurer

現在我面對的事實是,bean結構本身在不同的環境中發生變化。例如。在測試環境中,我定義了單一的bean,在生產環境中,我定義了另一個需要屬性類型爲List的屬性的bean - 換言之,PropertyPlaceholderConfigurer不能真正幫助。

我去定義每個環境彈簧XML配置通過<import resource="myDefinition-${Environment}.xml />導入它。這也很好,直到我想要它可選。我在那裏定義的資源是@Autowired(required = false)到另一個bean。

由於<import ... />不允許可選屬性(如可在此處看到的:https://jira.springsource.org/browse/SPR-1624)我最終爲environents提供了空的.xml配置文件,而我不需要該bean。這有點不方便。

任何人都可以建議在這種情況下的最佳做法?

謝謝。

+0

恕我直言,使用不同的bean進行測試和prod意味着在測試和產品中運行不同的代碼,這在我看來不是一個好主意。你不能使用一個具有list屬性的bean來測試嗎? – beny23 2012-03-07 10:12:23

+0

如果你需要同樣的列表屬性,但是在TEST中,你使用PROD中的1個項目很多項目?我認爲這個問題有點泛泛,你不可能在所有環境中都有完全相同的bean定義(就我的經驗而言)。 – 2012-03-07 13:05:21

+0

在這種情況下,爲什麼你不會有一個列表只有1項TEST? – beny23 2012-03-07 13:26:48

回答

4

在Spring 3.1中引入的Bean定義配置文件旨在解決這類問題。請參閱http://static.springsource.org/spring/docs/3.1.0.RC2/spring-framework-reference/html/new-in-3.1.html

+0

這看起來不錯,但它仍然是RC,所以我想被允許使用它。還是謝謝你的提示。 +1 – 2012-03-07 13:02:18

+0

3.1去年12月份決賽。 http://blog.springsource.org/2011/12/13/spring-framework-3-1-goes-ga – 2012-03-08 13:07:44

+0

哦,我的不好。感謝所有。 – 2012-03-08 13:39:48