在Spring中将默认属性值指定为NULL

时间:2013-05-24 12:36:03

标签: spring properties null default-value

我想在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默认值?

4 个答案:

答案 0 :(得分:77)

最好以这种方式使用Spring EL

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

检查是否指定了email.password并将其设置为null(不是"null"字符串)否则

答案 1 :(得分:3)

查看PropertyPlaceholderConfigurer#setNullValue(String)

它声明:

  

默认情况下,不定义此类空值。这意味着除非您明确映射相应的值

,否则无法将null表示为属性值

所以只需定义字符串&#34; null&#34;在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

答案 2 :(得分:2)

您可以尝试使用Spring EL。

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

答案 3 :(得分:0)

您似乎可以执行以下操作:

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

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