Fichier application.properties spécifique à l’environnement dans l’application Spring Boot

Dans mon application Spring Boot, je souhaite créer un fichier de propriétés spécifique à l’environnement. Le type de packaging de mon application en guerre et je l’exécute dans tomcat intégré. J’utilise sts et exécute le principal à partir de sts lui-même.

  1. Puis-je avoir un fichier de propriétés d’environnement spécifique comme application – $ {env-value} .properties?

Dans le cas ci-dessus, la valeur env aura des valeurs comme local / devl / test / prod

  1. Où définir le fichier env-value? Pour local, je peux le définir comme argument jvm via sts

  2. Qui lit l’application.properties dans l’application Spring Boot.

  3. Comment charger le fichier de propriétés spécifique à l’environnement? Par exemple, si j’ai défini la firebase database uid, pwd, schema etc dans un fichier de propriétés spécifique à l’environnement, dans ce cas la source de données pourra-t-elle comprendre les propriétés qu’elle contient?

  4. Puis-je utiliser le fichier application.properties et application-local.properties en même temps?

Spring Boot prend déjà en charge les propriétés basées sur les profils .

Ajoutez simplement un fichier application-[profile].properties et spécifiez les profils à utiliser avec la propriété spring.profiles.active .

 -Dspring.profiles.active=local 

Cela chargera les application.properties et application-local.properties avec ces dernières propriétés de substitution du premier.

Oui, vous pouvez. Étant donné que vous utilisez le spring, consultez l’anotation @PropertySource.

Anotate ta configuration avec

 @PropertySource("application-${spring.profiles.active}.properties") 

Vous pouvez l’appeler comme vous voulez et append plusieurs fichiers de propriétés si vous le souhaitez. Cela peut être intéressant si vous avez plus d’ensembles et / ou de valeurs par défaut qui appartiennent à tous les environnements (peuvent également être écrits avec @PropertySource {…, …, …}).

 @PropertySources( @PropertySource("application-${spring.profiles.active}.properties"), @PropertySource("my-special-${spring.profiles.active}.properties"), @PropertySource("overridden.properties")) 

Ensuite, vous pouvez démarrer l’application avec l’environnement

 -Dspring.active.profiles=test 

Dans cet exemple, name sera remplacé par application-test-properties et ainsi de suite.

on peut faire comme ça:

dans application.yml :

 spring: profiles: active: test //modify here to switch between environments include: application-${spring.profiles.active}.yml 

dans application-test.yml :

 server: port: 5000 

et dans application-local.yml :

 server: address: 0.0.0.0 port: 8080 

alors le démarrage du spring va démarrer notre application comme nous le souhaitons.