拦截器原理
-
根据当前请求,找到 HandlerExecutionChain 可以处理请求的 handler 以及 handler 的所有拦截器
-
先 顺序执行 所有拦截器的 preHandle 方法
- 如果当前拦截器的 preHandle 的返回为 true,则执行下一个拦截器的 preHandle
- 如果当前拦截器返回为 false,则 倒序执行所有已经执行了的拦截器的 afterCompletion
-
如果任何一个拦截器返回 false,直接跳出,不执行目标方法。
-
所有拦截器都返回 true,执行目标方法
-
倒序执行所有拦截器的 postHandle 方法
-
前边的步骤存在任何异常,都会直接触发 afterCompletion
-
页面成功渲染完成后,也会倒序触发 afterCompletion