Существует несколько способов изменения активных профилей, которые не берутся непосредственно из файла свойств.
- Вы можете использовать
<init-param>
, как вы это делаете в своем вопросе.
- Вы можете обеспечить системный параметр при запуске приложения
-Dspring.profiles.active="master"
- Вы можете получить
ConfigurableEnvironment
от вашего ApplicationContext
и setActiveProfiles(String...)
программно с context.getEnvironment().setActiveProfiles("container");
Вы можете использовать ApplicationListener
слушать инициализации контекста. Объяснения о том, как это сделать here. Вы можете использовать ContextStartedEvent
ContextStartedEvent event = ...; // from method argument
ConfigurableEnvironment env = (ConfigurableEnvironment) event.getApplicationContext().getEnvironment();
env.setActiveProfiles("master");
Вы можете получить значение "master"
из файла свойств, как вы считаете нужным.
Проблема в том, что используется в Spring MVC, который я не использую. Что эквивалентно в весеннем ядре? –
luksmir
@luksmir Нет эквивалента. Если вы контролируете создание контекста, просто используйте третий метод и setActiveProfiles(). –
Спасибо за объяснение, что нет альтернативы setActiveProfiles() в моем случае. – luksmir