HandlerInterceptor 代码分析

上一篇看了个梗概。留下一个问题: 

HandlerInterceptor     在这里看到这个HandlerExecutionChain对interceptor的调用,在这里深入看一下。

HandlerExecutionChain 就是一个类,绑定了Handler( 对应的Controller) 和 Interceptors , 所以作用就是对Controller前后执行interceptors,   类似Filter

 

几个问题:

1. interceptor调用位置?

 

 1  2 3 对应调用 handlerInterceptor preHandle, postHandle, afterCompletion

 

先看第一行的:

 

进到对应的interceptor实现类,preHandler返回true, 如果返回false,  就会到DispatcherServlet就直接return了。 

 

 

 

看第二行没有特别的:

 

 由于它只重写了preHandle

 

 所以走到它父类的postHandle了。方法是空的。

 

 

 

第三行和第二行一样不赘述了。

 

以上就是执行位置。

所以如果实现HandlerInterceptor ,  preHandle 应该返回true, 具体要拦截的内容写在return true之前就行。 postHandle和afterCompletion  都是void方法,直接在里面写需要拦截的内容。

 

 

 

 2.interceptor 是什么时候注册的?

 

posted @ 2020-10-15 13:01  圣金巫灵  阅读(126)  评论(0编辑  收藏  举报