在SpringMVC中配置多个拦截器时候
执行顺序如下所示
但是为什么是这样呢?
这就需要查看源码了,先布置断点
然后debug运行,点击 testInterceptor
后台显示如下
DispatchServelet处理请求主要是doDispatch方法,点进该方法
红线部分是处理拦截器的preHandle方法
点开进入
这里我们可以清楚的看到多个拦截器时候,拦截器数据是放在interceptorList中,从0开始往上走,也就是从配置顺序的从前到后,这里注意我们配置了两个拦截器,但是这里的interceptorList.size是3,也就是说有四个拦截器,里面包含了两个SpringMVC默认的拦截器
接下来我们看蓝线部分,这里是处理PostHandle方法
这里是从interceptorList.size开始递减的,也就是从配置顺序的从后到前
然后我们接着往后看,这里黄线部分是处理afterCompletion方法的
我们点进去
接着走
熟悉的一幕