профили в весенней партии

Я пытаюсь понять, как использовать @profiles в spring-batch. Я создал файл Java с двумя классами:

@Configuration
@Profile("nonlocal")
class NonLocalConfiguration {
}
and
@Configuration
@Profile("local")
class LocalConfiguration {
}

в основном классе java я пытаюсь установить профили следующим образом:

AbstractApplicationContext context = new ClassPathXmlApplicationContext("applicationcontext.xml");
String run_env = System.getenv("profile");
System.out.println("run_env is: " + run_env);
context.getEnvironment().setActiveProfiles(run_env);
context.refresh();

Я установил профиль, используя переменную среды как profile=local

Когда программа выполняется, я получаю исключение нулевого указателя, которое, я думаю, неправильно получает профиль. Как я могу использовать концепцию профилей в Spring Batch? Будет ли это отличаться в обычной весне от весенней партии?


person user3379502    schedule 18.11.2015    source источник


Ответы (1)


Насколько я понял, вы должны установить профиль до создания ApplicationContext. После создания контекста приложения изменение профиля не будет иметь никакого влияния.

Из документации SpringBoot, глава 25.2
http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-profiles.html

Программная настройка профилей
Вы можете программно установить активные профили, вызвав SpringApplication.setAdditionalProfiles(…​) до запуска вашего приложения. Также можно активировать профили с помощью интерфейса Spring ConfigurableEnvironment.

person Hansjoerg Wingeier    schedule 19.11.2015