我试图为了自己的目的修改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}]`
我怎样才能完成我在这里尝试做的事情?
答案 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>