Ce mécanisme est rendu possible par la définition d'un bean utilisant la classe PropertyPlaceholderConfigurer de Spring dans le fichier properties/applicationContext.xml | Bloc de code |
|---|
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:/properties/defaults.properties</value>
<value>classpath:/properties/config.properties</value>
<value>file:${application.config.location}</value>
</list>
</property>
<property name="ignoreResourceNotFound" value="true" />
</bean>
|
Ici on définit les propriétés dans le fichier defaults.properties.Elles sont éventuellement écrasées par celles définies dans config.properties. Ici on utilise aussi la possibilité de surcharger ces valeurs par une référence à un fichier qui sera précisé par une option au lancement de la JVM (Ex : -Dapplication.config.location=/tmp/foo.properties). Afin que le propertyConfigurer ne lève pas une exception au cas où cette dernière possibilité n'est pas utilisée on positionne une des ces propriétés (ignoreResourceNotFound) pour qu'il ignore les éventuelles ressources absentes. |