Existe-t-il un moyen de spécifier une valeur de propriété par défaut dans Spring XML?

Nous utilisons un PropertyPlaceholderConfigurer pour utiliser les propriétés Java dans notre configuration Spring ( détails ici )

par exemple:

 ${my.server.port}  

Nous aimerions append une propriété supplémentaire, mais avoir un système dissortingbué où les instances existantes pourraient toutes utiliser une valeur par défaut. Existe-t-il un moyen d’éviter de mettre à jour tous nos fichiers de propriétés, en indiquant une valeur par défaut dans la configuration de Spring lorsqu’il n’y a pas de valeur de propriété prioritaire définie?

Cherchez-vous le PropertyOverrideConfigurer documenté ici

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

Le PropertyOverrideConfigurer, un autre post-processeur de la fabrique de beans, est similaire au PropertyPlaceholderConfigurer, mais contrairement à ce dernier, les définitions d’origine peuvent avoir des valeurs par défaut ou aucune valeur pour les propriétés du bean. Si un fichier de propriétés de substitution ne comporte aucune entrée pour une propriété de bean, la définition de contexte par défaut est utilisée.

Spring 3 prend en charge la syntaxe ${my.server.port:defaultValue} .

Il existe une fonctionnalité peu connue, ce qui la rend encore meilleure. Vous pouvez utiliser une valeur par défaut configurable au lieu d’une valeur codée en dur, voici un exemple:

config.properties:

 timeout.default=30 timeout.myBean=60 

context.xml:

   config.properties      

Pour utiliser la valeur par défaut tout en pouvant être facilement remplacée ultérieurement, faites-le dans config.properties:

 timeout.myBean = ${timeout.default} 
  ${my.server.port:8088}  

devrait fonctionner pour que vous ayez 8088 comme port par défaut

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

http://thiamteck.blogspot.com/2008/04/spring-propertyplaceholderconfigurer.html indique que les “propriétés locales” définies sur le bean lui-même seront considérées comme des valeurs par défaut à remplacer par les valeurs lues dans les fichiers:

  my_config.properties   123    

Utilisez ?: savoir l’ opérateur Elvis :

  ${my.server.port?:8080}    

C’est un raccourci pour l’opérateur ternaire, disponible depuis Spring 3.0 , et qui a une connexion au même opérateur dans Groovy .