未进化的程序猿
人生最苦痛的是梦醒了无路可走。做梦的人是幸福的;倘没有看出可走的路,最要紧的是不要去惊醒他。鲁迅

1、 Spring MVC拦截器流程图

2、运行流程

1)、假设定义了两个拦截器配置类,为HandlerInterceptor1和HandlerInterceptor2

HandlerInterceptor1preHandler方法返回falseHandlerInterceptor2返回true,运行流程如下:

HandlerInterceptor1..preHandle..

从日志看出第一个拦截器的preHandler方法返回false后第一个拦截器只执行了preHandler方法其它两个方法没有执行第二个拦截器所有方法不执行,且Controller也不执行了。

HandlerInterceptor1preHandler方法返回trueHandlerInterceptor2返回false,运行流程如下:

HandlerInterceptor1..preHandle..

HandlerInterceptor2..preHandle..

HandlerInterceptor1..afterCompletion.. 

从日志看出第二个拦截器的preHandler方法返回false后第一个拦截器的postHandler没有执行,第二个拦截器的postHandler和afterCompletion没有执行,且controller也不执行了。

3、总结:

preHandle按拦截器定义顺序调用
postHandler按拦截器定义逆序调用
afterCompletion按拦截器定义逆序调用

postHandler在拦截器链内所有拦截器返成功调用
afterCompletion只有preHandle返回true才调用

 

posted on 2020-11-30 19:20  甘茂旺  阅读(435)  评论(0编辑  收藏  举报