在我的Spring配置中,我有以下几行:
<context:property-placeholder
location="/META-INF/spring/global.properties,#{systemProperties['external.propertyFile'] ?: ''}, /WEB-INF/local.properties"
ignore-resource-not-found="true" />
我的目的是在global.properties
中附加一些默认值,这些默认值应该被另一个通过external.propertyFile
传入的外部文件覆盖,并且某些属性由local.properties
中的应用程序本身保留在本地
从我在日志中看到的内容 - global.properties
和local.properties
被正确处理,但#{systemProperties ... }
的替换似乎不起作用。
任何提示是如何修复或解决它的?
以下是我的应用程序中的相关日志(缩短了一点):
Loading properties file from ServletContext resource [/META-/spring/counter.properties]
Loading properties file from ServletContext resource [/#{systemProperties['external.propertyFile'] ?: ''}]
WARN support.PropertySourcesPlaceholderConfigurer: Could not load properties from ServletContext resource [/#{systemProperties['external.propertyFile'] ?: ''}]: Could not open ServletContext resource [/#{systemProperties['external.propertyFile'] ?: ''}]
Loading properties file from ServletContext resource [/WEB-INF/local.properties]
只是一句话:
在相同XML配置的其他地方,替换工作正常 - 例如。用:
<util:properties
id="myProp"
location="#{systemProperties['my.propertyFile'] ?: '/META-INF/spring/my.properties'}"/>
但这次我需要一种更复杂的方法来处理/合并实际的属性值:(
答案 0 :(得分:0)
这对我来说很好用
<context:property-placeholder
location="/META-INF/spring/global.properties,${external.propertyFile},/WEB-INF/local.properties"
ignore-resource-not-found="true" />