2012-04-18 180 views
1

我想知道如果Spring有一個類似於Struts2的屬性文件機制,它首先在與控制器相同的包中查找屬性文件,然後向上移動包結構直到找到屬性文件或財產。Spring 3屬性文件每控制器

我想爲每個控制器定義一個屬性文件,但如果可能的話,我寧願不必將它們連接在一起。是否有一些可以遵循的約定將屬性文件與控制器相關聯?解析語言環境時,屬性文件解析也應該可以正常工作。例如,如果我在幾個prop文件中定義了一個名爲「title」的屬性,我希望在JSP中根據哪個控制器處理請求來解析正確的屬性。

ControllerA RETURNS ViewA USES PropA.title 

ControllerB RETURNS ViewB USES PropB.title 

我成功地將屬性文件自動連接到控制器的Model屬性並在JSP中顯示值。我還能夠在配置中指定ResourceBundleMessageSource,然後在JSP中顯示它的值。

+0

你是否爲了I18N的目的,或者它是爲了不同的方式嗎? – Stefan 2012-04-19 14:52:27

+0

我絕對想要I18N,但目前,我必須在整個應用程序中維護一個獨特的屬性鍵。否則,加載的第一個密鑰將優先。在Spring中有許多屬性文件時,典型的方法是什麼? – udeleng 2012-04-19 17:39:58

+0

如果你需要國際化 - 使用國際化的工具:) http://viralpatel.net/blogs/2010/07/spring-3-mvc-internationalization-i18n-localization-tutorial-example.html – Dima 2012-04-23 12:01:38

回答

0

開箱即用,不是我所知道的......但是您可以輕鬆地編寫一個,如果這就是您真正想要的!

Spring有類似BeanFactoryPostProcessor的東西,它可以讓你用你的BeanFactory/ApplicationContext做這樣的事情。我認爲BeanFactoryPostProcessor會適合這裏的法案 - 你可以通過在類路徑中查找屬性文件,獲取屬性並將它們應用到bean來「後處理」一個bean。

雖然我會這麼說 - 春天通常意味着相當非侵入性。如果你想要這樣的東西成爲你的設計的一部分,你可能想要想辦法在純Java中做到這一點,而不是使用Spring。例如,創建您自己的工廠並實施並單獨測試它。要求您的應用程序使用此工廠來獲取您的業務對象。

換句話說,你可以在春天做 - 但它並不總是最好的方法。它聽起來像它可能是最方便的,在你的情況下,但我沒有看到你的設置和在哪裏的細節。只是爲了思考..