有没有办法在Spring XML中指定一个默认的属性值?
我们使用一个PropertyPlaceholderConfigurer在我们的Springconfiguration中使用java属性( 详细信息在这里 )
例如:
<foo name="port"> <value>${my.server.port}</value> </foo>
我们想添加一个额外的属性,但是有一个分布式系统,现有的实例可以使用默认值。 有没有办法避免更新所有的属性文件,通过在Springconfiguration中指定一个默认值,当没有定义重写属性值?
你在寻找这里logging的PropertyOverrideConfigurer吗?
PropertyOverrideConfigurer(另一个bean工厂后处理器)类似于PropertyPlaceholderConfigurer,但与后者相反,原始定义对于Bean属性可以具有默认值或根本没有值。 如果重写的属性文件没有某个bean属性的条目,则使用默认的上下文定义。
Spring 3支持${my.server.port:defaultValue}
语法。
<foo name="port"> <value>${my.server.port:8088}</value> </foo>
应该为你工作8088作为默认端口
另见: http : //blog.callistaenterprise.se/2011/11/17/configure-your-spring-web-application/
有一个鲜为人知的function,这使得这更好。 您可以使用可configuration的默认值而不是硬编码的值,这里是一个例子:
config.properties:
timeout.default=30 timeout.myBean=60
context.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}
<bean id="propertyConfigurer"class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location"><value>my_config.properties</value></property> <property name="properties"> <props> <prop key="entry.1">123</prop> </props> </property> </bean>
使用?:
即猫王操作员 :
<property name="port"> <value>${my.server.port?:8080}</value> </property> <!-- OR --> <property name="port" value="${my.server.port?:8080}" />
这是三元运算符的缩写,自Spring 3.0起可用 ,并且与Groovy中的相同运算符有连接。