Регистрация FilterRegistrationBean без аннотации @Bean - PullRequest
0 голосов
/ 13 октября 2018

Я пытаюсь динамически зарегистрировать любое количество 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 не получен.Фильтр всегда выполняется последним.

1 Ответ

0 голосов
/ 13 октября 2018

Можете ли вы попробовать @Order (n), где n - это номер ордера, который будет выполнен над вашим классом (фильтром).Чем меньше число, тем выше приоритет

...