web-dev-qa-db-ja.com

Springでデフォルトのプロパティ値をNULLとして指定する

Spring XML構成ファイルでデフォルトのプロパティ値を定義したい。このデフォルト値はnullにしたいです。

このようなもの:

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

これは機能しません。 Spring XML構成のプロパティのnullデフォルト値を定義することさえ可能ですか?

29
Ondrej Bozek

このような方法でSpring ELを使用することをお勧めします

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

email.passwordが指定されているかどうかを確認し、null"null" St​​ringではなく)に設定します。

82
Anton Kirillov

PropertyPlaceholderConfigurer#setNullValue(String) をご覧ください

次のように述べています。

デフォルトでは、そのようなヌル値は定義されていません。これは、対応する値を明示的にマップしない限り、プロパティ値としてnullを表現する方法がないことを意味します

したがって、文字列「null」を定義して、PropertyPlaceholderConfigurerでnull値をマップします。

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

これで、プロパティファイルで使用できます。

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

Spring ELを使用してみてください。

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

次のことができるようです。

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

そして

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