我正在尝试在弹簧过滤器链中插入(在第一个位置)一个简单的自定义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批注。