Внешняя конфигурация springboot - специфичная для профиля конфигурация

Согласно документации SpringBoot, порядок конфигурации такой:

Специфичные для профиля свойства приложения за пределами вашего упакованного jar (application-{profile}.properties и YAML варианты)

Специфичные для профиля свойства приложения, упакованные внутри вашего jar (application-{profile}.properties и YAML варианты)

Свойства приложения за пределами вашего упакованного фляги (application.properties и YAML варианты).

Свойства приложения, упакованные внутри вашего jar (application.properties и YAML варианты).

В моем проекте есть профиль с именем "prod" и следующие файлы:

  • application.yml (внутри банки)
  • application-prod.yml (внутри банки)

И я также хочу переопределить некоторые свойства, используя внешний файл. Так как в соответствии с документами, внешний application.yml будет переопределено внутренним application-prod.ymlМне нужно убедиться, что внешний файл рассматривается как profile specific Конфигурационный файл

Я пытался использовать:

-Dspring.config.location=<my path>/application-prod.yml

и я также попробовал:

-Dspring.config.location=file:<my path>/application-prod.yml

Во всех случаях я получаю значение от внутреннего application-prod.yml

Если я полностью удаляю внутренний файл конфигурации, я получаю значение от внешнего (так что я знаю, что файл конфигурации забирает файл).

Я понимаю, что этот внешний файл считается эквивалентом общего application.yml а не конкретный профиль.

Как я могу настроить его, чтобы он рассматривался как внешний профиль для конкретного профиля?

1 ответ

Нашел ответ:

Вам нужно использовать Directory внешне, чтобы установить специфичные для профиля файлы конфигурации, не используя файл напрямую, и он должен заканчиваться на /, Так и должно быть:

-Dspring.profiles.active=prod

-Dspring.config.location=/<some-path>/config/ (любой путь, который заканчивается /)

и там есть:

application-prod.yml

Другие вопросы по тегам