2016-12-06 58 views
1

在我的骆驼/蓝图项目中,我定义的blueprint.xml一个property-placeholder如何以将来自多个属性占位符属性转换成Java

<cm:property-placeholder id="props.placeholder" persistent-id="props.blueprint"> 
    <cm:default-properties> 
     <cm:property name="app.name" value="app-service" /> 
    </cm:default-properties> 
</cm:property-placeholder> 

有了这个地方,我可以注入在java中的属性(如骆驼路线):

@Value("${app.name}") 
private String name; 

现在我需要引入第二属性占位符:

<cm:property-placeholder id="container_specific.placeholder" persistent-id="container_specific.blueprint" 
         placeholder-prefix="%%{" placeholder-suffix="}%%"> 
    <cm:default-properties> 
     <cm:property name="service.port" value="1234"/> 
    </cm:default-properties> 
</cm:property-placeholder> 

但是如何使用/注入属性从第二持有人到Java? @Value("%%{service.port}%%)不起作用。

+0

你尝试@PropertyInject(一个例子“{{service.port}}”)) –

+0

这与第二个占位符有什么关系? – dermoritz

+1

我的意思是用@PropertyInject(“service.port”)替换@Value注释,我用这种方式在我的代码中使用它,并且工作正常。我认为不同的属性占位符的主要用途是当你正在做单元测试,并且你想在你的测试中覆盖它们。然后你引用persisent-id的值。 –

回答

2

阅读文档:http://camel.apache.org/using-propertyplaceholder.html

有它展示了如何指由ID蓝本,所以只配置骆驼指那些两个ID

<propertyPlaceholder id="properties" 
        location="blueprint:props.placeholder,blueprint:container_specific.placeholder"> 
+0

谢谢!这是否适用于''@Value(“$ {app.name}”)'或者我需要使用'@ PropertyInject''?模糊的属性名称会发生​​什么? – dermoritz

+0

询问电脑 - 尝试一下 –