# 如何自定义

HandlerInterceptor

实现接口

mvc:interceptors

配置 bean

## mvc:interceptor

配置 bean
这种配置,可以指定(或者排除) 路径


## 总结

  • preHandle - 可以考虑做权限,日志,事务
  • postHandle - 可以对请求域中的属性或视图作出修改
  • afterCompletion - 释放资源

## debugger 看 流程
perHandle

下图可知,perHandle 的 调用 是在 <mark>调用目标方法之前</mark>

如果,某一个***的 preHandle 方法返回 false ,后面***也就不继续执行了 , 之前的 (上面) DispatcherServlet doDispacher 也直接 返回

postHandle

下图可知,postHandle 的调用时在:<mark>目标方法之后,渲染视图之前</mark>

afterCompletion

在 processDispatchResult 中调用

render 方法(渲染视图) <mark>之后</mark>调用


# 多个***下的执行顺序

## 执行结果分析

## 代码角度分析

preHandle

顺序

postHandle

倒序

afterCompletion

<mark>从 interceptorIndex 开始</mark>(之前执行的最后一个***),倒序

interceptorIndex 在哪里定义?
preHandle()方法 - 里面定义