Apache camel CamelBlueprint测试,为什么可以';我是否可以覆盖此propertyplaceholder?

Apache camel CamelBlueprint测试,为什么可以';我是否可以覆盖此propertyplaceholder?,apache-camel,blueprint-osgi,Apache Camel,Blueprint Osgi,我有一个布尔标志propertyplaceholder,我试图在我的一个单元测试中覆盖它,但它不起作用 <cm:property-placeholder id="id" persistent-id="persistent-id> <cm:default-properties> <cm:property name="flag" value="true" /> </cm:default-properties> </cm:prope

我有一个布尔标志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>
}


我的errorQueue属性工作正常,错误消息将显示为“mock:error”,但该标志不是重写属性。有人知道这是为什么吗?

我不确定,但我认为你的价值观不被接受。 各州的Javadoc:

Properties类表示一组持久的属性。属性可以保存到流中,也可以从流中加载。属性列表中的每个键及其对应的值都是一个字符串

如果您使用的是布尔值,请尝试使用

prop.put("flag", "false");

通常,
属性占位符的键值是字符串,并在运行时转换为适当的类型。

当其

例如,以下
${flag}
由OSGi blueprint 100%控制:


useOverridePropertiesWithPropertiesComponent
是针对Camel属性占位符的Camel属性组件,例如Camel使用的
{}
语法


啊,我没有意识到这一点。谢谢你指出这一点。我切换到使用“UseOverrideProperties with ConfigAdmin”,并使标志正常工作。谢谢你,克劳斯!
@Override
protected Properties useOverridePropertiesWithPropertiesComponent() {
  Properties prop = new Properties();
  prop.put("errorQueue", "mock:error");
  prop.put("flag", false);

  return prop;
prop.put("flag", "false");