spring的内置filter/interceptor和自定义的filter、interceptor先后顺序怎样?

spring的内置filter和springmvc内置interceptor和自定义的没有指定order的filter、interceptor先后顺序怎样?
自定义的在内置的之前还是之后执行?

阅读 2.7k
2 个回答

按照我的理解,filter是有顺序的,比如在web.xml中的配置的顺序,或者spring boot主动注册的顺序:

FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
        filterRegistrationBean.setOrder(6);
        filterRegistrationBean.setFilter(new XXXFilter());
        filterRegistrationBean.setName("filter1");
        filterRegistrationBean.addUrlPatterns("/*");
        return filterRegistrationBean;

这些都是有顺序的,按照的你问题来说,既然没顺序,那肯定不是web.xml(这种只要配置就会有顺序),那我就任务你是spring boot,我没有尝试过使用filter却没设置order,不过你可以参考我的一篇文章尝试自己debug一下,看看是什么顺序,https://segmentfault.com/a/11...
也可以继续等高手回复

就是按定义order顺序执行的,filter设置order的方法楼上已经说了,我补充一下拦截器的方法吧

@Bean
@Order(2)
public WebMvcConfigurer c1() {
    return new WebMvcConfigurer() {
        public void addInterceptors(InterceptorRegistry registry) {
            registry.addInterceptor(new Inteceptor1());
        }
    };
}
推荐问题
宣传栏