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
デフォルト値を定義することさえ可能ですか?
このような方法でSpring ELを使用することをお勧めします
<property name="password" value="${email.password:#{null}}"/>
email.password
が指定されているかどうかを確認し、null
("null"
Stringではなく)に設定します。
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
Spring ELを使用してみてください。
<prop key="email.username">#{null}</prop>
次のことができるようです。
@Value("${some.value:null}")
private String someValue;
そして
@Bean
public static PropertySourcesPlaceholderConfigurer propertyConfig() {
PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer = new PropertySourcesPlaceholderConfigurer();
propertySourcesPlaceholderConfigurer.setNullValue("null");
return propertySourcesPlaceholderConfigurer;
}