我不知道是否有方法從屬性實例的形式從Spring環境中提取屬性(例如從ApplicationContext獲取)?或者,至少有沒有辦法在Spring Environment中枚舉屬性,或者將它們全部作爲地圖,或者我可以將[最初未知]屬性集合轉換爲Properties對象的任何其他方式?獲取彈簧環境作爲屬性
我需要此功能才能創建jclouds Context
,請致電org.jclouds.ContextBuilder.newBuilder()
和.overrides(Properties)
。我們的想法是僅通過.properties文件配置實際的雲提供程序,而我不希望將應用程序邏輯與提供程序特定的屬性相耦合。
[UPDATE]
要使用利用<context:property-placeholder>
被配置.properties文件,它實際上指定的路徑的列表,這樣的:
< context:property-placeholder location=
"classpath:/jdbc.properties,
file:${jboss.server.config.dir}/jdbc.properties,
file:${catalina.home}/conf/jdbc.properties"
ignore-resource-not-found="true"/>
這表明的.properties文件將按順序在所提及的位置列表中進行搜索。我想達到以下目的:
- 保留.properties文件的列表及其可能的位置在這個XML定義文件中;
- 允許在XML中提到的.properties文件的任何中放置與jcloud相關的屬性;
- 以Properties對象的形式訪問由Spring解析和加載的屬性,所以我可以將它提供給jclouds
ContextBuilder
。
請讓我知道,如果這一切都是可行的。先謝謝你!
-Vlad
爲什麼這麼「複雜」。您可以簡單地使用' '來讀取屬性,這些屬性又可以被注入到' '元素中。保存你加載文件兩次。 –
2014-12-02 12:09:04
Deinum,你說得對,但那隻能從Spring管理的bean中工作。由於OP似乎是自己創建這個對象(newBuilder()),所以這是行不通的。 – 2014-12-02 12:13:51
他需要那些應該注入的屬性,他們如何閱讀應該無關緊要。閱讀應該是,imho,外化。 – 2014-12-02 12:14:47