我是Spring框架的新手,嘗試查看是否可以找到運行時加載現有PropertyPlaceholderConfigurer實例上的新Properties對象的解決方案。在Spring中運行時加載屬性PropertyPlaceholderConfigurer
我開始通過擴展Spring的PropertyPlaceholderConfigurer ......和有線如下
<bean class="com.myl.spring.VaultPropertyPlaceholderConfigurer">
<property name="ignoreUnresolvablePlaceholders" value="true" />
<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
<property name="locations">
<list>
<value>classpath*:startup.properties</value>
</list>
</property>
</bean>
startup.properties只有一個值是一個網址(我做一個GET請求來獲取更多的屬性)。沒有這個提取,我的context.xmls中沒有佔位符可以解析。
有沒有一種方法可以告訴我的VaultPropertyPlaceholderConfigurer在創建過程中調用方法 1st。解決硬編碼值 - 導致第二個URL爲 。發出GET請求並加載獲取的結果。
我們通過擴展PropertyPlaceholderConfigurer來解決這個問題。我們使用了一個java.util.Timer來讓類檢查.properties文件每隔X分鐘發生的變化,如果重新加載它,你可以使用processProperties方法加載你從get中獲取的屬性碼。當然,這是一個樣板化的解決方案,如果有一個春天的實現能夠完成這個任務,我會坦率地忽略它。另外,所有新加載的屬性在Bean創建期間都不可用,這讓我想知道爲什麼你要在第一時間做到這一點? – Chepech
感謝chepech,我別無選擇,只能用這種方式......或者現在這就是我想的唯一方法。 – Fallrookie