这是我的属性文件:
base1.jdbc.password=pass1
base2.jdbc.password=pass2
base3.jdbc.password=pass3
。
我有一个名为%DATABASE%的环境变量,可以是 base1 或 base2 或 base3 。
如何读取存储在环境变量中的数据库的密码属性?我想过这样的事情:
<property name="password" value="${#{systemProperties['DATABASE']}.jdbc.password}"/>
。
但不确定它是否正确。
答案 0 :(得分:0)
在应用程序上下文xml中使用以下配置
<bean
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>##YOUR PROPERTIES FILE NAME###</value>
</property>
</bean>
您可以从相关问题(How do you configure a Spring bean container to load a Java property file?)
中获取详细信息此处给出了PropertyPlaceholderConfigurer的说明(http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/beans/factory/config/PropertyPlaceholderConfigurer.html)
使用<value>
标记
以下是我在示例项目中如何使用属性的示例。我有一个名为processRetryPolicy的bean,其属性是从属性文件中加载的。
<bean id='processRetryPolicy' class='com.poc.process.model.ProcessRetryPolicy' >
<property name="isActive" value="${process.executor.conn.retry.policy.isActive}"/>
<property name="intervalType" value="${process.executor.conn.retry.interval.type}"/>
<property name="intervalvalue" value="${process.executor.conn.retry.interval.value}"/>
<property name="retryPolicy" value="${process.executor.conn.retry.default.policy}"/>
</bean>
属性在属性文件中定义为
process.executor.conn.retry.policy.isActive = true
process.executor.conn.retry.interval.type = HOUR
process.executor.conn.retry.interval.value = 1
process.executor.conn.retry.default.policy = Retry
要添加环境属性,我在其中一个弹簧批处理应用程序中使用了以下内容: -
<property name="environment" value="#{jobParameters['env.type']}"/>
环境类型作为运行时参数传递,如下所示
java -Xmx12288m -D<<List of Params and Values>> env.type=$env
在spring core中使用spring表达式语言(http://docs.spring.io/spring/docs/3.0.x/spring-framework-reference/html/expressions.html)
的另一种方法你的表情看起来是正确的。
答案 1 :(得分:0)
添加属性占位符
<bean id="propertyPlaceholderConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:xxxxx.properties</value>
</list>
</property>
</bean>
然后
<bean id="bean" class="xxx.class">
<property name="password" value="#{systemProperties['DATABASE']}.jdbc.password"/>
</bean>