我需要根据当前的弹簧配置文件运行其他初始化程序
即开发产品
当前我有2个类,每个初始化器一个,但是当我部署应用程序时,两个类都被执行了,我怎么只让一个基于配置文件的类运行?
这是执行env.getActiveProfiles()时获得的当前配置文件。
Profile : dev
对于Dev初始化程序来说,
@Profile("dev")
public class DevInitializer implements WebApplicationInitializer
{ ..}
对于Prod来说,它就像dev,但是有过滤器
@Profile("prod")
public class ProdInitializer implements WebApplicationInitializer {
....
Add some Filters
}
答案 0 :(得分:1)
您不需要单独的Webapp初始化程序。过滤器是使用Java配置添加的,您可以具有特定于配置文件的@Bean方法,也可以为不同的配置文件指定完全不同的配置类。
如果还没有,请像这样制作一个Configuration类:
@Configuration
public class WebConfiguration extends WebMvcConfigurerAdapter {
// make one of these for each filter to be added in prod only
@Profile("prod")
@Bean
public FilterRegistrationBean someFilterRegistration(SomeFilter someFilter) {
FilterRegistration registration = new FilterRegistrationBean();
registration.setFilter(someFilter);
registration.setName("someFilter");
registration.setOrder(1); // order in which filter takes effect in chain
return registration;
}
}
仅针对您指定的配置文件添加过滤器。