图:自定义拦截器类
图:配置自定义拦截器类
图:HandlerExecutionChain.java的applyPreHandle方法,调用每个拦截器的preHandle方法
如果某个拦截器的preHandle方法返回了false,那么拦截器链上的之后的拦截器也不会被调用,目标方法也不会被调用;
图:可以在该方法中做权限检查,日志和事务等
可以在该方法中修改域中的属性或者修改转向的视图
图:注意mvc:interceptor的使用方法
图:HandlerExecutionChain类的applyPostHandle方法
从i=getInterceptors().length - 1可以理解为什么postHandle方法的调用是倒序的了。
图:HandlerExecutionChain类对拦截器的afterCompletion方法的调用
从i>=0可以很清楚的理解,对interceptor的afterCompletion方法的调用也是倒序的;
变量interceptorIndex的含义就是拦截器链中preHandle方法返回true的最大拦截器索引;
越努力,越幸运,欢迎关注我的个人技术公众号
深耕java领域,技术专家,CSDN博客专家,联系我请去 微信公众号:波哥的技术积累,回复“资料”,会有意外惊喜,包含面试题,系统架构图,并发包源码分析等资料,而且波哥老师的视频教程【Java并发包源码分析(JDK1.8)】即将免费,https://edu.csdn.net/course/detail/22039,大家有对JUC源码感兴趣的,可以去学习,有问题微信联系,会及时解答!