有没有办法在Spring XML中指定默认属性值?

2022-08-31 10:35:04

我们正在使用属性占位符配置器在我们的Spring配置中使用java属性(详细信息在这里)

例如:

<foo name="port">
  <value>${my.server.port}</value>
</foo>

我们希望添加一个额外的属性,但有一个分布式系统,其中现有实例都可以使用默认值。有没有办法通过在Spring配置中指示默认值来避免更新我们所有的属性文件,以便在没有定义覆盖属性值时?


答案 1

Spring 3 支持语法。${my.server.port:defaultValue}


答案 2

有一个鲜为人知的功能,这使得它变得更好。您可以使用可配置的默认值而不是硬编码的值,下面是一个示例:

配置属性:

timeout.default=30
timeout.myBean=60

上下文.xml:

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location">
        <value>config.properties</value>
    </property>
</bean>

<bean id="myBean" class="Test">
    <property name="timeout" value="${timeout.myBean:${timeout.default}}" />
</bean>

要使用默认值,同时仍然能够在以后轻松覆盖,请在config.properties中执行此操作:

timeout.myBean = ${timeout.default}