网站建设成都公司哪家好,网页设计初学者公司网页设计模板,c2c的含义分别是什么,邯郸移动网站建设价格介绍
Spring有两种拦截器提供给我们使用#xff0c;一种是HandlerIntercepter#xff0c;另一种是MethodIntercepter。这两种的来源不同#xff0c;实现方式也不同#xff0c;具体的下面来看一下。
HandlerIntercepter
来源
来源于spring-webmvc包 HandlerIntercepter拦…介绍
Spring有两种拦截器提供给我们使用一种是HandlerIntercepter另一种是MethodIntercepter。这两种的来源不同实现方式也不同具体的下面来看一下。
HandlerIntercepter
来源
来源于spring-webmvc包 HandlerIntercepter拦截的是请求是springMVC项目中的拦截器它拦截的目标是请求的地址
实现原理
首先要明确HandlerIntercepter并没有使用反射或者代理来实现它的实现类似于Servlet的Filter使用了责任链模式来将多个拦截器组成一个链条每个拦截器都有机会对请求进行处理并决定是否继续传递给下一个拦截器。这样可以实现灵活的拦截逻辑也方便拦截器的复用和扩展。
HandlerInterceptor是在请求到达处理器方法之前和之后执行的。它是通过HandlerMapping来映射处理器方法和拦截器的。HandlerMapping是一个接口它有多个实现类比如RequestMappingHandlerMapping、BeanNameUrlHandlerMapping等。当程序启动的时候Spring会扫描所有的处理器方法和拦截器并将它们注册到对应的HandlerMapping中。当请求到达DispatcherServlet时它会调用HandlerMapping来获取匹配的处理器方法和拦截器并按照顺序执行拦截器的preHandle方法、处理器方法、postHandle方法和afterCompletion方法。
我们编写的拦截器就在RequestMappingHandlerMapping的interceptors中
过程
我们编写的拦截器在程序启动时就会被加载到RequestMappingHandlerMapping的interceptors中这个interceptors其实存在在RequestMappingHandlerMapping的父类AbstractHandlerMapping中
代码
这块儿我另开一篇回头把链接更新过来。
MethodIntercepter
来源
来源于spring-aop包MethodInterceptor是AOP项目中的拦截器它拦截的目标是方法而不是请求。它可以在方法执行前后添加额外的逻辑
实现原理
从它的来源来看它的确使用了反射和动态代理的技术。