2016-12-06 3 views
1

Dans mon projet de chameau/plan i défini un property-placeholder dans le blueprint.xml:Comment injecter des propriétés de plusieurs espaces réservés de propriété en 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> 

Avec cela en place, je peux injecter les propriétés en java (par exemple chameau routes):

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

maintenant je dois introduire un 2ème espace réservé de la propriété:

<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> 

Mais comment utiliser/injecter la propriété du 2ème titulaire dans Java? @Value("%%{service.port}%%) ne fonctionne pas.

+0

Avez-vous essayé @PropertyInject ("{{service.port}}")) –

+0

Comment est-ce lié à la 2ème placeholder? – dermoritz

+1

Je veux dire remplacer l'annotation @Value par @PropertyInject ("service.port"), je l'ai utilisé dans mon code de cette façon et cela fonctionne. L'utilisation principale que je penserais de la propriété-placeholder différente est quand vous faites des tests unitaires et vous voulez les remplacer dans vos tests. Ensuite, vous faites référence à la valeur persisent-id. –

Répondre

2

Lire la documentation: http://camel.apache.org/using-propertyplaceholder.html

Il est un exemple qui montre comment faire référence au plan par id, donc il suffit de configurer Camel pour se référer à ces deux ids

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

Merci! Est-ce que cela fonctionne avec '' @Value ("$ {app.name}") '' ou dois-je utiliser '' @ PropertyInject''? Qu'arrivera-t-il aux noms de propriété ambigus? – dermoritz

+0

Demandez à l'ordinateur - essayez-le –