Внешняя конфигурация 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