2016-12-08 4 views
0

J'ai développé une application de repos de démarrage de printemps et je suis en train de lire le fichier environnement YAML spécifique en fonction de la valeur « spring.profiles.active »botte de printemps ne pas lire environnement fichier YAML spécifique

J'ai deux fichiers

1. application.yml 
2. application-qa.yml 

et moi avons ci-dessous la propriété dans les deux fichiers

application.yml fichier a la propriété ci-dessous

comp: 
bu: 
    env: local 

fichier application qa.yml a la propriété ci-dessous

comp: 
bu: 
    env: QA 

et je suis en train spring.profiles.active=qa, donnée ci-dessus, je me attendais que seul application-qa.yml à être chargée, mais dans ce cas, les deux sont application.yml and application-qa.yml se charger et quand mon code recherche la propriété comp.bu.env il obtient toujours la valeur

locale

ne

Je veux mon code pour lire le comp.bu.env propriété du fichier application-qa.yml.

pouvez-vous aider à comprendre ce qui me manque ici?

+1

[Les propriétés spécifiques au profil doivent remplacer celles non spécifiques] (http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html # boot-features-externe-config-profile-specific-properties), vous pouvez ajouter 'spring-boot-starer-actuator', et accéder'/env' pour voir ce qui est arrivé à vos propriétés. – tan9

+0

tan9, pouvez-vous élaborer plus s'il vous plaît? – Suresh

+1

Ajoutez 'spring-boot-starter-actuator' à votre pom.xml ou build.gradle, exécutez votre application, puis accédez à http: // localhost: 8080/env pour les informations sur l'environnement exposées par Spring [Endpoint] (http://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-endpoints.html). – tan9

Répondre

0

Merci pour vos points, je l'ai résolu. J'ai profil AWS dans l'application-qa.yml qui est provoquant l'omission de mes propriétés QA car le nom de profil que j'ai fourni est QA. J'ai déplacé mes propriétés au-dessus du profil AWS: dans le fichier application-qa.yml puis ces propriétés ont commencé à ramasser.

1

Supprimer la configuration comp.bu.env de application.properties. Créer un fichier de configuration séparé application-dev.yaml et placez cette configuration là:

comp: 
bu: 
    env: local 

Maintenant, lorsque vous travaillez sur configure locale spring.profiles.active=qa.

Cela créerait effectivement un profil de configuration de développement.

+0

merci pour la suggestion, je n'ai pas application.properties j'ai application.yml donc je l'ai supprimé et créé application-dev.yml et configuré spring.profiles.active = qa, et j'essaie d'élever l'application , mais mon application cherche toujours le fichier application.yml et échoue car ce fichier n'est pas présent. le démarrage du ressort nécessite toujours le fichier application.yml ??? – Suresh

1

Il semble que la valeur spring.profiles.active ne soit pas définie correctement, et que votre application charge par défaut l'application.yml. Essayez de définir la valeur avec -Dspring.profiles.active=qa avant la commande bootRun.

par exemple. Si vous utilisez gradle, vous feriez ./gradlew -Dspring.profiles.active=qa bootrun