SpringMVC - 13 - 自定义拦截器HandlerInterceptor 、多个拦截器下的执行顺序
# 如何自定义
HandlerInterceptor
实现接口
mvc:interceptors
配置 bean
## mvc:interceptor
配置 bean
这种配置,可以指定(或者排除) 路径
## 总结
- preHandle - 可以考虑做权限,日志,事务
- postHandle - 可以对请求域中的属性或视图作出修改
- afterCompletion - 释放资源
## debugger 看 流程
perHandle
下图可知,perHandle 的 调用 是在 调用目标方法之前
如果,某一个拦截器的 preHandle
方法返回 false ,后面拦截器也就不继续执行了 , 之前的 (上面) DispatcherServlet doDispacher 也直接 返回
postHandle
下图可知,postHandle 的调用时在:目标方法之后,渲染视图之前
afterCompletion
在 processDispatchResult 中调用
render
方法(渲染视图) 之后调用
文章目录
# 多个拦截器下的执行顺序
## 执行结果分析
## 代码角度分析
preHandle
顺序
postHandle
倒序
afterCompletion
从 interceptorIndex 开始(之前执行的最后一个拦截器),倒序
interceptorIndex
在哪里定义?preHandle()
方法 - 里面定义