我有一个布尔标志propertyplaceholder,我试图在我的一个单元测试中覆盖,但它不起作用。
<cm:property-placeholder id="id" persistent-id="persistent-id>
<cm:default-properties>
<cm:property name="flag" value="true" />
</cm:default-properties>
</cm:property-placeholder>
此标志在bean中使用:
<bean id="myBean" class="com.myBean">
<property name="flag" value="${flag}" />
</bean>
我想在进行单元测试时将属性覆盖为false,所以我实现了useOverridePropertiesWithPropertiesComponent()方法:
@Override
protected Properties useOverridePropertiesWithPropertiesComponent() {
Properties prop = new Properties();
prop.put("errorQueue", "mock:error");
prop.put("flag", false);
return prop;
}
我的errorQueue属性工作正常,错误消息将变为“mock:error”,但该标志未被覆盖属性。有谁知道这是为什么?
答案 0 :(得分:1)
<bean>
例如,以下${flag}
由OSGi蓝图100%控制:
<bean id="myBean" class="com.myBean">
<property name="flag" value="${flag}" />
</bean>
useOverridePropertiesWithPropertiesComponent
用于Camel属性占位符的Camel属性组件,例如Camel使用的{{ }}
语法。
答案 1 :(得分:0)
我不确定,但我认为你的价值不被接受。 Properties州的Javadoc:
Properties 类表示一组持久的属性。可以将属性保存到流中或从流中加载。属性列表中的每个键及其对应值都是字符串。
您正在使用布尔值,请尝试使用
prop.put("flag", "false");
通常,property-placeholder
的键值是字符串,并在运行时转换为适当的类型。