Как внедрить свойства из нескольких заполнителей свойств в java

В моем проекте camel/blueprint я определил property-placeholder в blueprint.xml:

<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}%%) не работает.


person dermoritz    schedule 06.12.2016    source источник
comment
Вы пробовали @PropertyInject({{service.port}}))   -  person Souciance Eqdam Rashti    schedule 06.12.2016
comment
как это связано со вторым заполнителем?   -  person dermoritz    schedule 06.12.2016
comment
Я имею в виду заменить аннотацию @Value на @PropertyInject(service.port), я использовал ее в своем коде таким образом, и это работает. Основное использование, которое я думаю о другом свойстве-заполнителе, - это когда вы выполняете модульные тесты и хотите переопределить их в своих тестах. Затем вы ссылаетесь на значение persent-id.   -  person Souciance Eqdam Rashti    schedule 06.12.2016


Ответы (1)


Прочтите документацию: http://camel.apache.org/using-propertyplaceholder.html

Существует пример, который показывает, как обращаться к чертежу по идентификатору, поэтому просто настройте Camel для обращения к этим двум идентификаторам.

<propertyPlaceholder id="properties" 
                     location="blueprint:props.placeholder,blueprint:container_specific.placeholder">
person Claus Ibsen    schedule 06.12.2016
comment
Спасибо! Это работает с @Value("${app.name}") или мне нужно использовать @PropertyInject? Что произойдет с неоднозначными именами свойств? - person dermoritz; 06.12.2016