web-dev-qa-db-fra.com

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 en Tomcat intégré. J'utilise les mailles et exécute la main à partir des mailles mêmes.

  1. Est-ce que je peux avoir un fichier de propriétés spécifique à l'environnement comme application - $ {env-value} .properties?

Dans le cas ci-dessus, env-value aura les valeurs suivantes: local/devl/test/prod

  1. Où définir le fichier env-value? Pour les locaux, je peux le définir comme argument JVM par le biais de sts

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

  3. Comment charger le fichier de propriétés spécifique à l'environnement? Par exemple, si je définis l'ID de la base de données, le fichier pwd, le schéma, etc. dans un fichier de propriétés spécifique à l'environnement, la source de données sera-t-elle en mesure de comprendre les propriétés qu'il contient?

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

62
user3534483

Spring Boot déjà supporte pour profil propriétés.

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

-Dspring.profiles.active=local

Ceci chargera le application.properties et le application-local.properties avec les dernières propriétés écrasantes du premier.

127
M. Deinum

Oui, vous pouvez. Puisque vous utilisez spring, consultez l'annotation @PropertySource.

Annotez votre configuration avec

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

Vous pouvez l'appeler comme bon vous semble et ajouter plusieurs fichiers de propriétés inn si vous le souhaitez. Peut-être agréable si vous avez plus d'ensembles et/ou de valeurs par défaut qui appartiennent à tous les environnements (vous pouvez aussi écrire 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, etc.

19
Tzen

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

ensuite, Spring Boot démarrera notre application comme nous le souhaitons.

6
Cuttlefish