Spring Загрузка: как использовать несколько yml файлов
В Spring Boot, я знаю, что я могу заменить application.properties на application.yml и использовать формат YAML.
Однако мой application.yml становится переполненным, поэтому мне нужно немного разбить его. Как я могу это сделать? Я хотел бы сделать что-то вроде этого:
...
@Configuration
@EnableAutoConfiguration
@EnableWebMvc
@EnableScheduling
@PropertySource({"classpath:application.yml", "classpath:scheduling.yml"})
public class ApplicationConfig {
...
Ответы
Ответ 1
@PropertySource
не поддерживает YAML (возможно, он будет в Spring 4.1). Вы можете установить spring.config.location
или spring.config.name
в список, разделенный запятыми (например, как системное свойство или аргумент командной строки).
Лично мне нравится весь мой YAML в одном месте (структура действительно помогает разбить его визуально, и вы можете использовать документы внутри файла, чтобы разделить его больше). Это просто вкус, я думаю.
Ответ 2
Ответ 3
Вы можете использовать активную концепцию профиля в своем основном файле yaml. Например:
spring.profiles.active: test
означает, что у вас должен быть application-test.yml
файл в вашем каталоге ресурсов. Учтите, что активные профили будут переопределять свойства с одинаковыми именами в вашем основном файле yaml.
Для получения дополнительной информации посетите:
http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-profiles.html
Ответ 4
Если у меня много конфигураций и/или сред, обычно я делаю это:
$ 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
Предположим, что вашему приложению нужны 4 файла .yml.
application.yml
application-dev.yml
application-uat.yml
application-prod.yml
и вы должны установить разные настройки для каждого файла.
Вам просто нужно установить свои настройки в соответствующей среде, такой как dev, uat ot prod level и добавить только одно свойство в файл application.yml
.
spring:
profiles:
active: dev
application: /* optional */
name: Application Name