У меня есть веб-приложение Spring Boot, предоставляющее услуги для отдыха.
Я спрашиваю себя, как правильно управлять профилями в Фильтрах. На самом деле в моем приложении 2 профиля: dev и prod (вы угадаете, что это означает ...)
В режиме prod мне нужно активировать больше фильтров, чем в режиме dev.
Класс конфигурации My Filters следующий:
@Configuration
public class FiltersConfig {
@Bean
public FilterRegistrationBean filterRegistrationBean(CompositeFilter compositeFilter){
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
filterRegistrationBean.setDispatcherTypes(EnumSet.allOf(DispatcherType.class));
filterRegistrationBean.addUrlPatterns("/*");
filterRegistrationBean.setFilter(compositeFilter);
return filterRegistrationBean;
}
@Bean
@Profile("dev")
public CompositeFilter devCompositeFilter(){
CompositeFilter compositeFilter = new CompositeFilter();
List<Filter> filtersList = new ArrayList<>();
//filtersList.add(filter1());
compositeFilter.setFilters(filtersList);
return compositeFilter;
}
@Bean
@Profile("prod")
public CompositeFilter prodCompositeFilter(){
CompositeFilter compositeFilter = new CompositeFilter();
List<Filter> filtersList = new ArrayList<>();
//filtersList.add(filter1());
compositeFilter.setFilters(filtersList);
return compositeFilter;
}
}
Мои вопросы:
- Это хорошая практика - добавлять @Profile в метод?
- Есть ли способ заставить компилятор исключить классы, методы и т. Д., Аннотированные профилями, отличными от того, который задан как текущий? (Я не хочу, чтобы моя производственная банка / война была заполнена ненужным кодом!)
- Обеспечивает ли весенняя загрузка более четкий способ организации профилей?
Спасибо.