Я пытаюсь динамически зарегистрировать любое количество FilterRegistrationBeans на основе параметров конфигурации.Как я могу зарегистрировать FilterRegistrationBean без метода, аннотированного @ Bean.
Мое рабочее решение - добавить фиксированное количество методов, аннотированных аннотацией @Bean, которая обрабатывает много кода и не является гибкой.
@Bean
@Conditional(ConfigConditionFoo.class)
public FilterRegistrationBean filter6() {
return new FilterRegistrationBean(...);
}
public static class ConfigConditionFoo extends AllNestedConditions {
public ConfigCondition6() { super(ConfigurationPhase.REGISTER_BEAN); }
@ConditionalOnProperty(prefix = "dummy", value = "filters[5].url")
static class OnEnabled { }
@ConditionalOnProperty(prefix = "dummy", value = "filters[5].filter-method", havingValue = "servlet", matchIfMissing = true)
static class OnServletFilter{ }
}
Я пробовал следующее:
- Регистрация в контексте приложения.
- Используйте ConfigurableServletWebServerFactory и добавьте компонент в инициализаторы.
Проблема в том, что порядок FilterRegistrationBean не получен.Фильтр всегда выполняется последним.