36

我想在 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>
...

这行不通。甚至可以null在 Spring XML 配置中定义属性的默认值吗?

4

4 回答 4

103

最好以这种方式使用 Spring EL

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

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

于 2013-07-04T12:47:12.660 回答
4

看看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
于 2014-04-03T07:14:01.517 回答
2

您可以尝试使用 Spring EL。

<prop key="email.username">#{null}</prop>
于 2013-05-24T12:48:40.257 回答
2

看来您可以执行以下操作:

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

@Bean
public static PropertySourcesPlaceholderConfigurer propertyConfig() {
    PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer = new PropertySourcesPlaceholderConfigurer();
    propertySourcesPlaceholderConfigurer.setNullValue("null");
    return propertySourcesPlaceholderConfigurer;
}
于 2017-09-14T13:40:50.417 回答