2017-01-04 1 views
0

J'ai un printemps Boot application.yml avec cette config pour Cloud Config:Spring cloud client Config avec des espaces réservés

spring: 
    cloud: 
    config: 
     uri: http://localhost:8080/config 
     name: ${cluster.name} 
     profile: ${cluster.idx} 

Je lis cluster.name et cluster.idx d'une coutume PropertySouce qui charge un fichier JSON. Mais Spring Boot n'est pas capable de résoudre l'espace réservé pour le moment.

13:04:37,370 ERROR [main] org.springframework.boot.SpringApplication(SpringApplication.java:839) : Application startup failed 
java.lang.IllegalArgumentException: Could not resolve placeholder 'cluster.idx' in string value "${cluster.idx}" 

Comment puis-je dire Spring Boot pour charger mon PropertySource avant d'essayer de résoudre les espaces réservés? Merci d'avance. J'utilise Sp Boot 1.4.3 et Sp Cloud Config 1.2.2.

Répondre

1

Vous ne serez pas en mesure d'utiliser les sources de propriété car ils ne sont pas encore disponibles, et ne sera pas au moment où ce fichier est lu. Vous avez quelques options, cependant. D'abord, vous pouvez placer ces propriétés dans bootstrap.properties (ou bootstrap.yml si vous préférez). Je soupçonne que vous essayez de faire quelque chose qui est axé sur le profil et cela ne fonctionnera pas. Dans ce cas, vous pouvez créer bootstrap- {profile} .yml. Donc, si vous utilisez -Dspring.profiles.active = dev, vous aurez un fichier bootstrap-dev.yml qui contiendra les valeurs de ce profil.

La deuxième approche plus simple serait de les transmettre à la machine virtuelle comme arguments. -Dcluster.name = foo -Dcluster.idx = bar