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 :

  1. Ignorer les @Value vide
  2. 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…

One Response to “Valeur des Properties Spring par défaut”

  1. hugo dit :

    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" />
    

Leave a Reply