Valeur des Properties Spring par défaut
Astuce bien pratique que je viens de découvrir dans Spring, il est possible d’attribuer des valeurs par défaut aux « property » (@Value) de cette manière :
@Configuration
public class RequestConfiguration {
@Value(value = "${repository?InMemoryRepository}")
private String repository;
}
Pour ce faire, il faut configurer le property placeholder de Spring pour :
- Ignorer les @Value vide
- remplacer le séparateur par défaut (« : ») par « ? » qui est plus parlant.
<bean id="placeholderConfig">
<property name="locations">
<list>
<value>classpath:conf.properties</value>
</list>
</property>
<property name="ignoreResourceNotFound" value="true"/>
<property name="ignoreUnresolvablePlaceholders" value="true" />
<property name="valueSeparator" value="?" />
</bean>
Et voilà !
Maintenant il faut faire attention car Spring va ignorer toutes les properties null ce qui pourra provoquer des NullPointerException à l’exécution plutôt que des erreurs de configuration au démarrage de l’application…
Moi je garde le « : » à la place du « ? »
En revanche, tu peux le compacter :
<context:property-placeholder ignore-resource-not-found="true" ignore-unresolvable="true" location="classpath:conf.properties" />