我正在开发一个Spring应用程序,其中属性文件将打包在.war文件中以进行部署。
<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}" />
但显然Spring无法找到它
Caused by: java.io.FileNotFoundException: ${CONFIG_FILE_LOCATION} (The system cannot find the file specified)
有谁知道我怎么解决它?有没有其他方式Spring访问系统属性?
答案 0 :(得分:1)
实际上,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>
答案 1 :(得分: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"/>