1
votes

Spring Boot - Comment configurer les variables d'environnement?

Je souhaite pouvoir spécifier des variables d'environnement dans mon application Spring Boot. J'ai une bibliothèque externe que j'utilise qui nécessite des variables d'environnement, et les valeurs de ces variables changeront en fonction de l'environnement dans lequel nous déployons.

Par exemple, dans application.properties de mon jar de démarrage à ressort "myapp-boot-packaged.jar", j'ajoute la propriété suivante:

toto = bar

L'équivalent de java -Dfoo = bar -jar myapp-boot-packaged.jar


3 commentaires

quel était le problème exactement? demandez-vous comment définir des variables et des valeurs env via l'application Spring Boot?


Oui. J'ai une bibliothèque externe qui s'attend à ce que les variables d'environnement soient définies. Cependant, la bibliothèque externe ne le reconnaît pas lorsque je définis les variables dans application.properties. Je peux exécuter l'application en spécifiant les variables d'environnement via la configuration d'exécution de l'EDI. Je cherche un moyen de l'intégrer dans mon application.


Il s'avère que le problème se trouvait dans le pot fourni.


3 Réponses :


1
votes

Vous pouvez simplement l'exécuter en informant dans la ligne de commande comme ceci:

$ java -jar myapp-boot-packaged.jar --foo='bar'

Spring Boot Docs


0 commentaires

1
votes

Utiliser les propriétés de l'environnement ou de la source de propriété

Vous n'avez pas à configurer quoi que ce soit qui est pris en charge de manière native.

Spring Boot vous permet d'externaliser votre configuration afin que vous puissiez travailler avec le même code d'application dans différents environnements. Vous pouvez utiliser des fichiers de propriétés, des fichiers YAML, des variables d'environnement et arguments de ligne de commande pour externaliser la configuration. Valeurs de la propriété peut être injecté directement dans vos beans en utilisant la @Value annotation, accessible via l'abstraction Spring's Environment, ou être lié à des objets structurés via @ConfigurationProperties.

C'est fait pour vous, il vous reste donc à déclarer votre variable dans:

  • Arguments de ligne de commande (--foo = bar)
  • Attributs JNDI de java: comp / env.
  • Propriétés du système Java (System.getProperties ()).
  • Variables d'environnement du système d'exploitation.

Propriétés par environnement (Profils)

Si vous souhaitez utiliser la propriété par environnement (local, développement, production), vous pouvez utiliser des profils, un exemple factice est d'avoir application- [profile] .properties (où [profile] pourrait être dev, prod ...) avec application.properties dans votre classpath ou externalized (reportez-vous à l'utilisation de spring.config.location ).

Notez que les propriétés spécifiques du profil d'application remplacent celles de application.properties


2 commentaires

Merci. La bibliothèque externe lisant la variable d'environnement ne peut pas la lire à partir de mon fichier application.properties. Je recherche un moyen de le conditionner dans mon application à l'aide du fichier de propriétés spécifiques au profil.


Il s'avère que le problème se trouvait dans le pot fourni.



1
votes

Vous devez déclarer dans application.properties foo = $ {bar}

Le moment où vous l'exécutez:

Java -jar myApp.jar -Dbar = someValue


0 commentaires