2016-12-02 100 views
2

我正在開發一個Spring應用程序,其中的屬性文件將打包在.war文件中進行部署。如何在Spring中加載屬性文件位置的系統屬性

<context:property-placeholder location="classpath:application.properties" /> 

不過,我想能夠與可在standalone.xml被指定爲系統屬性另一個文件覆蓋它們:

</extensions> 

<system-properties> 
    <property name="CONFIG_FILE_LOCATION" value="/path/to/application.properties"/> 
</system-properties> 

這是我的解決方案,

<context:property-placeholder location="classpath:application.properties, 
             file:///${CONFIG_FILE_LOCATION}" /> 

但顯然春無法找到它

Caused by: java.io.FileNotFoundException: ${CONFIG_FILE_LOCATION} (The system cannot find the file specified) 

有沒有人有任何想法我可以修復它? Spring是否有另一種方式訪問​​系統屬性?

+0

這是實際工作,這是我的錯,因爲我是與做錯standalone.xml版本開始沒有配置屬性。 – aUserHimself

回答

0

它實際上是可能的Spring通過指定system property覆蓋某些屬性使用此解決方案到另一個文件的位置:

<context:property-placeholder location="classpath:alarm_notification.properties, file:///${CONFIG_FILE_LOCATION}" /> 

如果在位於CONFIG_FILE_LOCATION的文件內沒有覆蓋某個屬性,則將使用application.properties的值代替。

只需確保在用於啓動服務器的standalone.bat文件如下配置:

</extensions> 

<system-properties> 
    <property name="CONFIG_FILE_LOCATION" value="/path/to/application.properties"/> 
</system-properties> 
0

您需要的文件命名爲如下:

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
<property name="locations"> 
    <list> 
     <value>file:/myFolder/folder/path/application.properites</value> 
    </list> 
</property> 

或如下:

<context:property-placeholder locations="file:/myFolder/folder/path/application.properites"/> 
+0

我已經知道這一點,我的問題是關於動態設置這個值,作爲系統屬性,然後讓Spring加載它。 – aUserHimself

+1

請參閱以下... http://stackoverflow.com/questions/30640453/loading-property-file-from-system-properties-with-default-path-in-spring-context – KayV

相關問題