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 {
...
@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.
@PropertySource
, vous n'en avez pas besoinscheduling.yml
en src/main/resources/application-scheduling.yml
ajouter dans le fichier src/main/resources/application.yml
ligne suivante:
spring.profiles.include: 'scheduling'
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
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
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