Настроить ресурсы по-разному для каждого профиля в Spring-Boot - PullRequest
0 голосов
/ 19 сентября 2019

Мне нужно настроить мой проект начальной загрузки таким образом, чтобы, если вы запустите его с профилем «local», никакие «внешние» файлы .properties (помещенные в тот же каталог, что и jar) не были приняты.При запуске банки с любым другим профилем, однако, они должны быть приняты.

Все вопросы, которые я нашел, когда речь шла только о настройке «внутренних» ресурсов внутри структуры проекта.Я не мог понять, как сообщить приложению, принимать или нет такие «внешние» файлы.

1 Ответ

0 голосов
/ 19 сентября 2019

Spring boot поддерживает внешние конфигурации со свойством --spring.config.location

Если можно указать фактический файл, папку или любую их комбинацию.

Значения в этих файлах свойств будут переопределенызначения из внутренней конфигурации.

Убедитесь, что вы прочитали соответствующую главу Документация

Обновление: , как я прокомментировалневозможно «подавить» внешнюю конфигурацию.Однако, в качестве одного из обходных путей, вы можете рассмотреть возможность реализации EnvironmentPostProcessor, который будет динамически добавлять профили.

Он запускается после того, как среда становится доступной, но до того, как Spring фактически обрабатывает ее bean-компоненты;в двух словах, он предоставляет способ настройки вашей конфигурации.

Так что это может основываться на следующих предположениях:

  • внешний файл называется «внешнее приложение».свойства "

  • приложение всегда запускается с --spring.config.locations=<path_to_external_folder>

  • в дополнение к указанному выше, укажите профиль: --spring.profiles.active=local Это загрузитapplication.properties и application-local.properties доступны для внутреннего использования, но не затрагивают внешний файл, если только в постпроцессоре вы не добавите что-то вроде (псевдокод):

    if(! getActiveProfiles().contains("local")) { addProfile("external"); }

Вы можете прочитать об окружении постпроцессоров Здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...