web-dev-qa-db-fra.com

Spring Boot: comment utiliser plusieurs fichiers yml

Dans Spring Boot, je sais que je peux remplacer application.properties par application.yml et utiliser le format YAML . Cependant, mon application.yml est encombré, je dois donc le séparer un peu. Comment puis je faire ça? J'aimerais faire quelque chose comme ça:

...
@Configuration
@EnableAutoConfiguration
@EnableWebMvc
@EnableScheduling
@PropertySource({"classpath:application.yml", "classpath:scheduling.yml"})
public class ApplicationConfig {
...
15
Johan Frick

@PropertySource ne supporte pas YAML (probablement au printemps 4.1). Vous pouvez définir spring.config.location ou spring.config.name sur une liste séparée par des virgules (par exemple, en tant que propriété système ou argument de ligne de commande).

Personnellement, j'aime tout mon YAML au même endroit (la structure aide vraiment à le décomposer visuellement et vous pouvez utiliser des documents à l'intérieur du fichier pour le fractionner davantage). C'est juste le goût je suppose.

10
Dave Syer
  1. supprime l'annotation @PropertySource, vous n'en avez pas besoin
  2. renommer votre scheduling.yml en src/main/resources/application-scheduling.yml
  3. ajouter dans le fichier src/main/resources/application.yml ligne suivante: 

    spring.profiles.include: 'scheduling'

22
Maksim Kostromin

Vous pouvez utiliser le concept de profil actif dans votre fichier yaml principal. Par exemple:

spring.profiles.active: test

cela signifie que vous devriez avoir le fichier application-test.yml dans votre répertoire de ressources. Considérez que les profils actifs remplaceront les propriétés portant les mêmes noms dans votre fichier yaml principal.

Pour plus d'informations, rendez-vous sur: http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-profiles.html

6
Jalal Sajadi

si j'ai beaucoup de configurations et/ou d’environnements, je le fais habituellement:

$ cat src/main/resources/application.yml:
spring:
  profiles:
    include: >
      profile1,
      profile2,
      ...
      profileN

$ ls -lah src/main/resources/config:
drwxr-xr-x  4 mak  staff   136B Apr 16 23:58 .
drwxr-xr-x  6 mak  staff   204B Apr 17 01:54 ..
-rw-r--r--  1 mak  staff    60B Apr 16 23:58 application-profile1.yml
-rw-r--r--  1 mak  staff    62B Apr 16 23:16 application-profile2.yml
...
-rw-r--r--  1 mak  staff    50B Apr 16 23:16 application-profileN.yml
5
Maksim Kostromin

Supposons que votre application nécessite 4 fichiers .yml.

application.yml
application-dev.yml
application-uat.yml
application-prod.yml

et vous devez définir un paramètre différent pour chaque fichier.

Il vous suffit de définir vos paramètres sur les environnements appropriés, tels que dev, uat ot prod et l'obligation d'ajouter une seule propriété dans le fichier application.yml

  spring:  
    profiles:
       active: dev
    application: /* optional */
       name: Application Name 
0
Deva