With the Settings4jPlaceholderConfigurer for the Springframework you can use Settings4j to inject Values into your beans.
In the following Example the Expression "${com/mycompany/myEntry}" will be replaced by the value form Settings4j.getString("com/mycompany/myEntry").
<beans> <!-- The PlaceholderConfigurer: --> <bean class="org.settings4j.helper.spring.Settings4jPlaceholderConfigurer" /> <!-- Example usage of Placholder-Expressions: --> <bean id="myDummyMap" class="java.util.HashMap"> <constructor-arg> <map> <entry key="MapEntry1"><value>${com/mycompany/myEntry}</value></entry> </map> </constructor-arg> </bean> </beans>
Or inject the Value with the Spring Annotation (Spring 3.0+; http://static.springsource.org/spring/docs/3.0.x/reference/expressions.html#expressions-beandef-annotation-based):
@Value("${com/mycompany/myEntry}") private String myEntry;
In most cases you will have the same Prefix for all Entries. So it's easier to define the Prefix in Settings4jPlaceholderConfigurer:
<bean class="org.settings4j.helper.spring.Settings4jPlaceholderConfigurer" > <property name="prefix" value="com/mycompany/"/> </bean> <bean id="myDummyMap" class="java.util.HashMap"> <constructor-arg> <map> <entry key="MapEntry1"><value>${myEntry1}</value></entry> <entry key="MapEntry2"><value>${myEntry2}</value></entry> </map> </constructor-arg> </bean>
So the values Settings4j.getString("com/mycompany/myEntry1") and Settings4j.getString("com/mycompany/myEntry2") will be read.
You can also define Default Properties if nothing is defined for some optional KEYs:
<bean class="org.settings4j.helper.spring.Settings4jPlaceholderConfigurer" > <property name="prefix" value="com/mycompany/"/> <property name="properties"> <props> <!-- Default Values --> <prop key="myEntry2">My Default Value for Entry 2</prop> </props> </property> </bean>
If you use the Spring-Placeholder for Settings4j, you must use a depends-on attribute to be sure that the initialization runs first:
<beans> <bean class="org.settings4j.helper.spring.Settings4jPlaceholderConfigurer" depends-on="initSettings4j"/> <!-- InitSettings4j.initSettings4j() will add the custom converter to the Settings4j instance. --> <bean id="initSettings4j" class="com.myProject.InitSettings4j" init-method="initSettings4j"/> </beans>