我部署了我的Spring Boot Web application on WildFly 8.1
,但现在我遇到了一些麻烦。
部署应用程序时,FilterRegistrationBeans
注册 Servlet 过滤器。我知道FilterRegistrationBean
s 是按顺序排列的AnnotationAwareOrderComparator
,并且这些过滤器是按该顺序注册的。但是当我访问我的应用程序时,Undertow 按相反的顺序调用过滤器。
例如,如果 Spring Boot 注册过滤器是这样的:
- 错误页面过滤器
- metricFilter(来自 Spring Boot 执行器)
- 字符编码过滤器
- hiddenHttpMethodFilter
- springSecurityFilterChain(来自 Spring Security)
Undertow 像这样调用这些过滤器:
- springSecurityFilterChain
- hiddenHttpMethodFilter
- 字符编码过滤器
- 公制过滤器
- 错误页面过滤器
如何正确指定这些过滤器顺序?某些过滤器的顺序(如org.springframework.boot.context.web.ErrorPageFilter
)在源代码中是硬编码的,我无法指定。