Loading Properties with Spring (via System Properties)
Posted
by gabe
on Stack Overflow
See other posts from Stack Overflow
or by gabe
Published on 2010-05-07T14:59:06Z
Indexed on
2010/05/07
15:08 UTC
Read the original article
Hit count: 825
My problem is as follows:
I have server.properties
for different environments. The path to those properties is provided trough a system property called propertyPath
. How can I instruct my applicationContext.xml
to load the properties with the given propertyPath
system property without some ugly MethodInvokingBean
which calls System.getProperty('');
My applicationContext.xml
<bean id="systemPropertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE"/>
<property name="placeholderPrefix" value="sys{"/>
<property name="properties">
<props>
<prop key="propertyPath">/default/path/to/server.properties</prop>
</props>
</property>
</bean>
<bean id="propertyResource" class="org.springframework.core.io.FileSystemResource" dependency-check="all" depends-on="systemPropertyConfigurer">
<constructor-arg value="sys{propertyPath}"/>
</bean>
<bean id="serviceProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="location" ref="propertyResource"/>
</bean>
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" ref="propertyResource"/>
<property name="placeholderPrefix" value="prop{"/>
<property name="ignoreUnresolvablePlaceholders" value="true"/>
<property name="ignoreResourceNotFound" value="false"/>
</bean>
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="prop{datasource.name}"/>
</bean>
with this configuration the propertyResource alsways complains about
java.io.FileNotFoundException: sys{propertyPath} (The system cannot find the file specified)
Any suggestions? ;-) Thanks gabe
© Stack Overflow or respective owner