Spring 3.5设置XML属性,使用PropertyPlaceholderConfigurer处理默认值。

huangapple go评论78阅读模式
英文:

Spring 3.5 Setting an xml property, handling the default value using PropertyPlaceholderConfigurer

问题

我正在使用 Spring 3.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。

我简要查看了 PropertyPlaceholderConfigurer,它看起来非常基础,没有太多选项。我以前没有使用过它。是否有人知道是否有一种简单的方法来处理默认值?或者我是否必须使用其他方法来设置测试上下文值?

英文:

I'm working with an old project using Spring 3.5 and xml config.

In the application context I am setting a property to an externally configured xml file value so something like this -

&lt;bean id=&quot;myService&quot; class=&quot;com.mypath.MyService&quot;&gt;
	&lt;property name=&quot;myProperty&quot; value=&quot;${myValue}:myDefaultValue&quot; /&gt;
&lt;/bean&gt;

This all works properly.

In some tests though there is a test-context.xml coming into play which sets the values of the properties like this

&lt;bean class=&quot;org.springframework.beans.factory.config.PropertyPlaceholderConfigurer&quot;&gt;
	&lt;property name=&quot;properties&quot;&gt;
		&lt;util:properties&gt;
			&lt;prop key=&quot;myProperty&quot;&gt;myValue&lt;/prop&gt;
		&lt;/util:properties&gt;
	&lt;/property&gt;
&lt;/bean&gt;

This is failing to 'understand' the default value. If I leave the value blank I get :myDefaultValue returned. If I set myValue like my example shows I get myValue:myDefaultValue.

I had a quick peak at the PropertyPlaceholderConfigurer and it looks very basic without many options. I've not used it before. Does anyone know if there is a simple way for me to handle the defaults ? Or maybe I have to use a different method to set the test context values ?

答案1

得分: 1

你的语法有些错误。表达式的默认值放在大括号内,像这样:${myValue:defaultValue}

英文:

You have your syntax slightly off. The default value for the expression goes inside the braces, like so: ${myValue:defaultValue}.

huangapple
  • 本文由 发表于 2020年10月6日 20:14:55
  • 转载请务必保留本文链接:https://go.coder-hub.com/64225605.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定