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

  • удалить @PropertySource аннотацию, вам это не нужно
  • переименуйте scheduling.yml в src/main/resources/application-scheduling.yml
  • добавить в src/main/resources/application.yml файл следующую строку:

    spring.profiles.include: 'scheduling'

Ответ 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