Définissez Spring Boot application.properties sur la base de la variable d'environnement
J'ai un Ressort de Démarrage de l'application qui sera exécuté dans différents environnements, et en fonction de l'environnement qu'il s'exécute dans, il va se connecter à une autre base de données. J'ai un peu de application.properties
fichiers, un pour chaque environnement, qui ressemblent à de tels:
application-local.properties
:
spring.datasource.platform=postgres
spring.datasource.url=jdbc:postgresql://localhost:5432/mydb
spring.datasource.username=dbuser
spring.datasource.password=123456789
application-someserver.properties
:
spring.datasource.platform=postgres
spring.datasource.url=jdbc:postgresql://someserver:5432/myproddb
spring.datasource.username=produser
spring.datasource.password=productionpass
etc. etc.
Sur chacune de mes environnements, j'ai une variable d'environnement appelée MYENV
qui est défini pour le type d'environnement il est, par exemple local
ou someserver
(le nom de la application-{env}.properties
fichiers correspond parfaitement à l'environnement de nom).
Comment puis-je obtenir printemps de démarrage à lire cette variable d'environnement et de choisir automatiquement le bon .properties
fichier? Je ne veux pas avoir à faire toute la -Dspring.profiles.active=someserver
en raison de la façon dont ce package est déployé (il ne sera pas courir comme un pot).
source d'informationauteur Tanishq dubey
Vous devez vous connecter pour publier un commentaire.
Dire de Printemps de Démarrage pour sélectionner le Profil Actif de la
MYENV
la propriété ou la variable d'environnement. Une façon de le faire est d'ajouter la ligne suivante dans votreapplication.properties
:De cette façon, le Printemps de Démarrage sera mis
spring.profiles.active
à la valeur deMYENV
variable d'environnement.Vous pouvez utilisez la variable d'environnement pour que
spring.profiles.active
si vous n'aimez pas passer d'un système de propriété par le biais de-D
arguments. Celui correspondant à la variable d'environnement estSPRING_PROFILES_ACTIVE
. Par exemple, si vous définissez laSPRING_PROFILES_ACTIVE
àlocal
lelocal
profil sera activé. Si vous êtes en insistant pour utiliserMYENV
variable d'environnement, la première solution est la voie à suivre.Si vous déployez l'application à certains conteneur (tomcat, weblogic, ...), vous pouvez spécifier une variable d'environnement. Par exemple permet de spécifier la variable d'environnement
application1.spring.profiles.active=someserver
et puis dans votre application.définir les propriétés de la propriétéspring.profiles.active=${application1.spring.profiles.active}
À l'aide de Printemps contexte 5.0 j'ai réussi à atteindre le chargement de la propriété correcte fichier en fonction de l'environnement système via l'annotation suivante
Ici MYENV valeur est lue à partir du système de l'environnement et si l'environnement n'est pas présent par défaut de l'environnement de test de la propriété fichier sera chargé, si je donne une mauvaise MYENV valeur il ne parvient pas à démarrer l'application.
Remarque: pour chaque profil, vous voulez maintenir que vous devez faire une demande-[profil].fichier de propriété et bien que j'ai utilisé le Printemps contexte 5.0 & pas de Printemps de démarrage - je crois que ça va aussi travailler sur le Printemps 4.1
C'est la meilleure solution je pense pour ma AWS Lambda - avec un minimum de dépendances