spring 3拦截器顺序

发布于 2021-02-02 11:24:50

我有一个实现两个拦截器的Spring 3 Web App。我正在使用带有@Configuration注释的配置类。代码如下:

    @Override
public void addInterceptors(InterceptorRegistry registry) {
    // TODO Auto-generated method stub
    super.addInterceptors(registry);
    registry.addInterceptor(homeInterceptor()).addPathPatterns("/");
    registry.addInterceptor(allInterceptor());
}

无论我将拦截器添加到注册表的顺序如何,始终在homeInterceptor的preHandle之前调用allInterceptor的preHandle函数。有谁知道如何控制拦截器的调用顺序?

谢谢!

关注者
0
被浏览
97
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    我看了下实现,全局拦截器(不与任何路径映射关联)在映射的拦截器(具有关联的路径模式)之前执行。因此,如果您要在homeInterceptor之前执行allInterceptor,则allInterceptor可能必须将其设为映射的拦截器(通过提供路径模式)。

    这是两种记录拦截器并在运行时查找拦截器的方法:
    org.springframework.web.servlet.handler.AbstractHandlerMapping.initInterceptors()

    org.springframework.web.servlet.handler.AbstractHandlerMapping.getHandlerExecutionChain(Object, HttpServletRequest)



推荐阅读
知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看