web-dev-qa-db-fra.com

Spécifiez la valeur par défaut de la propriété comme NULL dans Spring

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?

27
Ondrej Bozek

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

74
Anton Kirillov

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
3
Andrei Cojocaru

Vous pouvez essayer d'utiliser Spring EL.

<prop key="email.username">#{null}</prop>
2
YoK

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;
}
0
EpicPandaForce