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>