我正在尝试在弹簧过滤器链中插入(在第一个位置)一个简单的自定义Cors过滤器。

如果我这样做

@Component
@Order(Ordered.HIGHEST_PRECEDENCE)
public class CorsFilter implements Filter {


它完美地工作
我可以通过在Spring的ServletHandler.java中放置一个断点来验证它,

chain=getFilterChain(baseRequest, target, servlet_holder);


我只是想知道我是否不想使用@Componenent and @Order,而是在Application上下文中定义Filter bean。
如何设置过滤器的顺序?

最佳答案

参见示例:
在您的ServletInitializer类中:

@Bean
 public FilterRegistrationBean requestLogFilter() {
        final FilterRegistrationBean reg = new FilterRegistrationBean(createRequestLogFilter());
        reg.addUrlPatterns("/*");
        reg.setOrder(1); //defines filter execution order
        return reg;
 }

 @Bean
 public RequestLogFilter createRequestLogFilter(){
        return new RequestLogFilter();
 }


我的过滤器的名称是“ requestLogFilter”

警告:不要在类Filter上使用@Component批注。

07-24 13:57