98 votes

Y a-t-il un moyen de spécifier une valeur par défaut de la propriété Spring XML ?

Nous sommes à l'aide d'un PropertyPlaceholderConfigurer à utiliser les propriétés java dans notre configuration Spring (détails ici)

par exemple:

<foo name="port">
  <value>${my.server.port}</value>
</foo>

Nous aimerions ajouter une propriété supplémentaire, mais ont un système distribué où les instances existantes pourrions tous utiliser une valeur par défaut. Est-il un moyen pour éviter de mettre à jour l'ensemble de nos fichiers de propriétés, en indiquant une valeur par défaut dans le Ressort de config pour quand il n'y a pas une grande valeur de la propriété définie?

286voto

lexicore Points 7723

Le printemps 3 prend en charge l' ${my.server.port:defaultValue} de la syntaxe.

35voto

Buddy Casino Points 848

Il est un peu connu, ce qui le rend encore mieux. Vous pouvez utiliser un configurable valeur par défaut au lieu de codé en dur, voici un exemple:

config.propriétés:

timeout.default=30
timeout.myBean=60

context.xml:

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location">
        <value>config.properties</value>
    </property>
</bean>

<bean id="myBean" class="Test">
    <property name="timeout" value="${timeout.myBean:${timeout.default}}" />
</bean>

Pour utiliser la valeur par défaut tout en étant capable de facilement remplacer plus tard, dans config.propriétés:

timeout.myBean = ${timeout.default}

28voto

Uberto Points 1311
<foo name="port">
   <value>${my.server.port:8088}</value>
</foo>

devrait fonctionner pour vous d'avoir 8088 que le port par défaut

Voir aussi: http://blog.callistaenterprise.se/2011/11/17/configure-your-spring-web-application/

14voto

JoseK Points 20075

Vous êtes à la recherche pour le PropertyOverrideConfigurer documentée ici

http://static.springsource.org/spring/docs/2.5.x/reference/beans.html#beans-factory-overrideconfigurer

Le PropertyOverrideConfigurer, un autre bean factory post-processeur, est similaire à la PropertyPlaceholderConfigurer, mais dans contrairement à ce dernier, l'original les définitions peuvent avoir des valeurs par défaut ou pas de valeurs pour les propriétés du bean. Si prépondérant fichier de Propriétés n' pas d'entrée pour un certain bean de la propriété, le contexte par défaut définition est utilisée.

9voto

http://thiamteck.blogspot.com/2008/04/spring-propertyplaceholderconfigurer.html signale que le "local" propriétés définies sur le bean lui-même sera considéré comme valeurs par défaut pour être remplacées par les valeurs lues à partir des fichiers:

<bean id="propertyConfigurer"class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
  <property name="location"><value>my_config.properties</value></property>  
  <property name="properties">  
    <props>  
      <prop key="entry.1">123</prop>  
    </props>  
  </property>  
</bean> 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X