使用上下文:属性占位符的位置与Spring EL

我试图使用属性占位符加载一些属性文件,我想指定使用系统属性中的一个文件名,这样我可以根据我的应用程序在运行环境中加载不同的文件。

起初,我试过如下:

<context:property-placeholder location="classpath:environment_common.properties,classpath:environment_${app_env}.properties" />

我验证了系统属性(app_env)设置正确(如“巴”),但春天​​正在加载错误的文件,(例如,environment_foo.properties)。

我试着使用规划环境地政司下一:

<context:property-placeholder location="#{ 'classpath:environment_common.properties,classpath:environment_'.concat(systemProperties['app_env'] }.properties) }" />

但现在看来, context:property-placeholder不支持规划环境地政司:

java.io.FileNotFoundException: Could not open ServletContext resource [/#{'classpath:environment_common.properties]

它看起来好像context:property-placeholder有它自己的解析器寻找逗号分隔的多个属性文件,但它不是价值首先传递到规划环境地政司对其进行评估。

我应该如何使用context:property-placeholder ,或者我应该只是绕过它,并使用PropertyPlaceHolderConfigurer直接?

--------------解决方案-------------

我从来没有尝试直接在一个属性占位符元素使用规划环境地政司。 似乎有申请一个bug,虽然。 作为一个相当简单的解决方法:

<context:property-placeholder properties-ref="props" />
<util:properties id="props" location="#{ your expression here }"/>

我今天遇到这个问题。 这里是我的解决方案:

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location"
value="classpath:#{(T(java.lang.System).getProperty('my.property', 'development.properties'))}"/>
</bean>

我没有使用预定义变量systemProperties但假设你可以,如果你想。

分类:弹簧 时间:2015-03-15 人气:1
本文关键词: 春天,春天埃尔
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.509 (s). 10 q(s)