it-swarm.com.de

Geben Sie den Standardeigenschaftswert in Spring als NULL an

Ich möchte den Standardeigenschaftswert in der Spring XML-Konfigurationsdatei definieren. Ich möchte, dass dieser Standardwert null ist.

Etwas wie das:

...
<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>
...

Das geht nicht. Ist es sogar möglich, null Standardwerte für Eigenschaften in der Spring XML-Konfiguration zu definieren?

27
Ondrej Bozek

Es ist besser, Spring EL auf diese Weise zu verwenden

<property name="password" value="${email.password:#{null}}"/>

es prüft, ob email.password angegeben ist, und setzt es auf null (nicht "null" String)

74
Anton Kirillov

werfen Sie einen Blick auf PropertyPlaceholderConfigurer # setNullValue (String)

Es sagt, dass:

Standardmäßig ist kein solcher Nullwert definiert. Das bedeutet, dass Sie NULL nicht als Eigenschaftswert ausdrücken können, wenn Sie einen entsprechenden Wert nicht explizit zuordnen

Definieren Sie einfach die Zeichenfolge "null", um den Nullwert in Ihrem PropertyPlaceholderConfigurer zuzuordnen:

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="nullValue" value="null"/>
    <property name="location" value="testing.properties"/>
</bean>

Jetzt können Sie es in Ihren Eigenschaftendateien verwenden:

db.connectionCustomizerClass=null
db.idleConnectionTestPeriod=21600
3
Andrei Cojocaru

Sie können versuchen, Spring EL zu verwenden.

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

Anscheinend können Sie Folgendes tun:

@Value("${some.value:null}")
private String someValue;

und

@Bean
public static PropertySourcesPlaceholderConfigurer propertyConfig() {
    PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer = new PropertySourcesPlaceholderConfigurer();
    propertySourcesPlaceholderConfigurer.setNullValue("null");
    return propertySourcesPlaceholderConfigurer;
}
0
EpicPandaForce