Spring импортирует все файлы конфигурации в каталоге в другой файл конфигурации без явного указания профилей / имен файлов

#java #spring #spring-boot

#java #spring #spring-boot

Вопрос:

Есть ли способ импортировать все файлы конфигурации в каталог без необходимости явно указывать их профили / имена файлов один за другим?

Я думал об использовании spring.config.import , но, похоже, он не поддерживает указание каталога или шаблона для динамического импорта любых файлов конфигурации, содержащихся в каталоге.

Например:

У меня есть основная конфигурация application.yml и дочерние конфигурации в config/ каталоге, который содержит application-test1.yml , application-testN.yml и так далее. Я хочу автоматически загружать все файлы конфигурации в каталог, не указывая их явно application.yml .

Я пробовал их ниже, но они не работают.

 spring
    config
        import: classpath:config/

spring
    config
        file: file:config/*/
 

Ответ №1:

spring.config.location=classpath:/custom-config/

Это должно загрузить конфигурацию из указанной папки. В соответствии с различными конфигурациями профилей будет импортирована только конфигурация активных профилей, поэтому вам необходимо убедиться, что загружаемый стандартный файл конфигурации активирует эти профили (например, с помощью spring.profiles.include )

Дополнительные ссылки:

Комментарии:

1. Хм, похоже, в моем случае это не работает. Я добавил spring.config.location=classpath:config/ (с синтаксисом yaml) к основному application.yml , но дочерние конфигурационные файлы в каталоге не были загружены.

2. Я понял, что мой вопрос, вероятно, был недостаточно ясен. Я только что обновил его.

3. путь к классу:config/ уже должен быть проверен Spring по умолчанию. Если он не распознает внутреннюю конфигурацию, это просто потому, что он связан с профилями, которые не включены при запуске вашего приложения. Вы можете указать активные профили несколькими способами, например.: mvn spring-boot:run -Dspring-boot.run.profiles=dev,test1,test2,someOtherProfile ИЛИ через приложение. yml с использованием spring.profiles.include / spring.profiles.active

4. Это проблема, которую я пытаюсь решить. Есть ли в любом случае необходимость не указывать явно профили один за другим? Не похоже, что я могу использовать шаблоны?