Java Spring 3.5设置xml属性,使用PropertyPlaceHolderConfigure处理默认值

Java Spring 3.5设置xml属性,使用PropertyPlaceHolderConfigure处理默认值,java,spring,Java,Spring,我正在使用Spring3.5和xml配置处理一个旧项目 在应用程序上下文中,我将属性设置为外部配置的xml文件值- <bean id="myService" class="com.mypath.MyService"> <property name="myProperty" value="${myValue}:myDefaultValue" /> </bean> 这一切

我正在使用Spring3.5和xml配置处理一个旧项目

在应用程序上下文中,我将属性设置为外部配置的xml文件值-

<bean id="myService" class="com.mypath.MyService">
    <property name="myProperty" value="${myValue}:myDefaultValue" />
</bean>

这一切都正常工作

但在一些测试中,有一个test-context.xml正在发挥作用,它设置如下属性的值

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="properties">
        <util:properties>
            <prop key="myProperty">myValue</prop>
        </util:properties>
    </property>
</bean>

我的价值
这是因为无法“理解”默认值。如果将该值留空,则返回:myDefaultValue。如果我像我的示例所示那样设置myValue,我会得到myValue:myDefaultValue


我在PropertyPlaceHolderConfigure上快速达到顶峰,它看起来非常基本,没有很多选项。我以前没用过。有人知道我是否有一个简单的方法来处理默认值吗?或者我必须使用不同的方法来设置测试上下文值?

您的语法有点不正确。表达式的默认值放在大括号内,如下所示:
${myValue:defaultValue}

IIRC,应该是
${myValue:defaultValue}
。是的,这就解决了问题。谢谢。我不知道今后的路怎么走。如果你愿意的话,把它作为你解决问题的答案。否则我会删除这个问题,假装它从未发生过……仅供参考,这不是SpEL;这是一个属性占位符。SpEL是
Spring表达式语言
,在XML配置中由
{…}
表示(而不是属性占位符的
${…}
);这不对吗?(例如,我使用了字符串粘贴)我不知道你的意思;我刚刚澄清了
${…}
不是XML bean定义中的SpEL。@GaryRussell是
@Value
中的SpEL吗?不是
${…}
;对于SpEL表达式,同样需要
{…}
${…}
是简单的属性值替换)。斯佩尔远比这复杂得多;e、 g.
{@someBean.someProperty+@someOtherBean.otherProperty}