[JAVA] Gérer les variables d'environnement système dans Spring application.properties

introduction

Lors de la création d'une application avec Spring (Boot), vous souhaiterez peut-être obtenir la valeur de la variable d'environnement système. Je vais vous présenter la méthode d'acquisition qui sert également de mémo.

Quand utiliser les variables d'environnement système

Par exemple, si vous souhaitez vous connecter à la base de données, vous devez définir ce qui suit dans ʻapplication.properties`.

application.properties


###Valeur du paramètre de connexion à la base de données###
spring.datasource.url=<URL de la base de données>
spring.datasource.username=<Nom d'utilisateur>
spring.datasource.password=<mot de passe>

Dans un tel cas, si chaque valeur de paramètre est acquise à partir de la variable d'environnement système, les mérites suivants peuvent être pris en compte.

① __ Il n'est pas nécessaire de créer un fichier de paramètres pour chaque environnement. __ Le même fichier de configuration peut être utilisé dans d'autres environnements en définissant des variables d'environnement à l'avance ou en les définissant au moment de l'exécution. La création et la gestion de plusieurs fichiers de paramètres (par exemple, ʻapplication-devXX.properties`) pour chaque environnement sont gênants, donc ils peuvent être omis.

En outre, il n'est pas nécessaire d'écrire le processus de définition du fichier à lire pour chaque environnement dans le code source. (Parce que Spring Boot charge ʻapplication.properties` par défaut)

② __ Cela conduit à une amélioration de la sécurité. __ Si vous mettez les informations que vous voulez garder secrètes telles que le nom d'utilisateur et le mot de passe du chemin dans le solide dans ʻapplication.properties` et les téléchargez dans le référentiel distant, cela peut causer un problème de sécurité.

Si vous la définissez en tant que variable d'environnement, la valeur ne sera pas écrite directement, vous pouvez donc la pousser vers le référentiel distant en toute confiance.

Comment utiliser les variables d'environnement système dans ʻapplication.properties`

Réglez dans le format suivant.

application.properties


spring.datasource.url=${SPRING_DATASOURCE_URL}
spring.datasource.username=${SPRING_DATASOURCE_USERNAME}
spring.datasource.password=${SPRING_DATASOURCE_PASSWORD}

Par exemple, si vous expliquez spring.datasource.username = $ {SPRING_DATASOURCE_USERNAME},

(1) Tout d'abord, ajoutez une variable telle que SPRING_DATASOURCE_USERNAME = HogeHoge à la variable d'environnement système. Pour le nom de la variable d'environnement, remplacez la valeur cible ". " Dans le fichier de configuration par " _ " puis mettez-la en majuscule.

spring.datasource.usernamespring_datasource_usernameSPRING_DATASOURCE_USERNAME

(2) Dans ʻapplication.properties, définissez le nom de la variable d'environnement système sur la valeur incluse dans $ {} , telle que $ {SPRING_DATASOURCE_USERNAME}`.

Les variables d'environnement système sont maintenant disponibles à partir de ʻapplication.properties`.

point important

Si vous développez en utilisant eclipse ou sts, après avoir ajouté des variables d'environnement système, ceux qui démarrent l'application Spring Boot sur eclipse (sts) ou redémarrent une fois en essayant d'exécuter JUnit Est bon. Les variables d'environnement système peuvent ne pas être lues et une erreur peut se produire.

Probablement parce que la variable d'environnement système est lue et utilisée lorsque eclipse (sts) est démarrée, même si la variable d'environnement est ajoutée au démarrage, elle n'est pas reflétée, mais les détails sont inconnus.

résultat

Les variables d'environnement système peuvent être utilisées à partir du fichier de paramètres! !! !! !! !! (Wazap)

Recommended Posts

Gérer les variables d'environnement système dans Spring application.properties
Remplacement des variables d'environnement système par réflexion en Java
Environnement Java Spring dans vs Code
Définition des variables d'environnement de projet avec intelliJ
Comment utiliser les variables d'environnement dans RubyOnRails
Lorsqu'il y a des variables d'environnement dans les tests Java
[Printemps] Construction de l'environnement
Comment définir des variables d'environnement dans le fichier de propriétés de l'application Spring Boot
Changer d'environnement avec Spring Boot application.properties et l'annotation @Profile
SSO avec GitHub OAuth dans l'environnement Spring Boot 1.5.x
Gérer le mot de passe haché avec BCryptPasswordEncoder de Spring Security en Perl
Création d'un environnement de base de données avec Docker dans Spring Boot (IntellJ)
Inject Logger au printemps
Environnement de développement-développement Spring Boot-
Utilisez Interceptor au printemps
Microservices dans Spring Cloud
Obtenez des cookies au printemps
Comment modifier la valeur de paramètre de application.properties au moment du démarrage dans Spring Boot
Connectez-vous avec HttpServletRequest # login dans Spring Security dans l'environnement Servlet 3.x
Diverses applications de commutation.properties pour chaque environnement au démarrage de Spring Boot