Je souhaite définir la valeur de la propriété par défaut dans le fichier de configuration XML Spring. Je veux que cette valeur par défaut soit null
.
Quelque chose comme ça:
...
<ctx:property-placeholder location="file://${configuration.location}"
ignore-unresolvable="true" order="2"
properties-ref="defaultConfiguration"/>
<util:properties id="defaultConfiguration">
<prop key="email.username" >
<null />
</prop>
<prop key="email.password">
<null />
</prop>
</util:properties>
...
Ça ne marche pas. Est-il même possible de définir les valeurs par défaut null
pour les propriétés dans la configuration XML Spring?
Il vaut mieux utiliser Spring EL de cette manière
<property name="password" value="${email.password:#{null}}"/>
il vérifie si email.password
est spécifié et le définit sur null
(pas "null"
String) sinon
regardez PropertyPlaceholderConfigurer # setNullValue (String)
Il déclare que:
Par défaut, aucune valeur NULL de ce type n'est définie. Cela signifie qu'il n'y a aucun moyen d'exprimer null en tant que valeur de propriété sauf si vous mappez explicitement une valeur correspondante.
Définissez simplement la chaîne "null" pour mapper la valeur null dans votre PropertyPlaceholderConfigurer:
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="nullValue" value="null"/>
<property name="location" value="testing.properties"/>
</bean>
Maintenant, vous pouvez l'utiliser dans vos fichiers de propriétés:
db.connectionCustomizerClass=null
db.idleConnectionTestPeriod=21600
Vous pouvez essayer d'utiliser Spring EL.
<prop key="email.username">#{null}</prop>
Il semble que vous puissiez faire ce qui suit:
@Value("${some.value:null}")
private String someValue;
et
@Bean
public static PropertySourcesPlaceholderConfigurer propertyConfig() {
PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer = new PropertySourcesPlaceholderConfigurer();
propertySourcesPlaceholderConfigurer.setNullValue("null");
return propertySourcesPlaceholderConfigurer;
}