如何在propertyConfigurer bean中引用$ {ENV} var?

时间:2015-03-28 14:59:08

标签: java spring environment-variables production-environment

我试图为了自己的目的修改this example

我想从服务器特定的文件加载属性,使用类似这样的东西:

<beans:bean id="propertyConfigurer"
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <beans:property name="locations">
        <beans:list>
            <beans:value>${ENV_JDBC_CONFIG}</beans:value>
        </beans:list>
    </beans:property>
</beans:bean>

其中ENV_JDBC_CONFIG是指定属性文件路径的enrivonment变量。

失败
`java.io.FileNotFoundException: Could not open ServletContext resource [/${ENV_JDBC_CONFIG}]`

我怎样才能完成我在这里尝试做的事情?

2 个答案:

答案 0 :(得分:0)

${}中引用的变量未定义时,Spring会抛出误导性错误消息。

在这种情况下它告诉我FileNotFound,实际上变量没有定义(无论如何都是精确的拼写)。

修复方法是在-DENV_JDBC_CONFIG=file:/blah/blah/blah

中添加/etc/defaults/tomcat7

答案 1 :(得分:0)

使用configurer的systemPropertiesMode属性来使用系统属性 检查this article,它会告诉您管理外部属性的提示。

如果要在其他bean定义中使用env变量,可以像

一样使用它

<bean id="yourBean" class="com.company.YourBean"> <property name="environment" value="#{ systemProperties['env.var1'] }"/> <!-- other properties goes here....--> </bean>