资讯专栏INFORMATION COLUMN

springMvc源码解读--HandlerMapping

VishKozus / 2345人阅读

摘要:它的作用是根据找到相应的处理器和接口里面只有一个方法只要使用就会返回一个,当然我们可以定义自己的实现类来实现。

HandlerMapping:它的作用是根据request找到相应的处理器handler和interceptors,HandlerMapping接口里面只有一个方法HandlerExecutionChain getHandler(HttpServletRequest request) throws Exception;只要使用request就会返回一个HandlerExecutionChain,当然我们可以定义自己的实现类来实现。

HandlerMapping的类的继承结构


可以看到HandlerMapping家族的成员有两只,一支继承AbstractUrlHandlerMapping,另一个继承与AbstractHandlerMethodMapping,AbstractHandlerMapping是HandlerMapping的抽象类实现,所有HandlerMapping的实现都继承于AbstractHandlerMapping,AbstractHandlerMapping采用模版的设计模式设计了HandlerMapping实现的整体结构,子类需要通过模版方法提供一些初始值和具体的算法,AbstractHandlerMapping保存了所有的配置的interceptors,在获取到handler后会根据从request提取的lookupPath将相应的interceptors装配上去。

public abstract class AbstractHandlerMapping extends WebApplicationObjectSupport implements HandlerMapping, Ordered 从中可知,AbstractHandlerMapping继承于WebApplicationObjectSupport,初始化的时候会自动的调用initApplicationContext模板方法,

/* java
@Override

protected void initApplicationContext() throws BeansException {
    extendInterceptors(this.interceptors); (1)
    detectMappedInterceptors(this.adaptedInterceptors); (2)
    initInterceptors(); (3)
}

*/
其中,extendInterceptors是模版方法,用于给子类提供一个添加interceptors的入口,detectMappedInterceptors方法用于将Spring MVC 的容器及父类容器中的所有MappedInterceptors的bean添加到mappedInterceptors中,initInterceptors方法的作用是初始化interceptor,具体内容其实是将interceptors属性里所包含的对象按类型添加到MappedInterceptors或adaptedInterceptors

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/72600.html

相关文章

  • spring-MVC源码解读(一)

    摘要:处理器是继前端控制器的后端控制器,在的控制下对具体的用户请求进行处理。由于涉及到具体的用户业务请求,所以一般情况需要程序员根据业务需求开发。 1、mcv整体架构和流程 showImg(https://segmentfault.com/img/bV55Qq?w=860&h=406); 用户发送请求至前端控制器 DispatcherServlet DispatcherServlet 收到...

    I_Am 评论0 收藏0
  • SpringMVC源码分析--HandlerMapping(一)

    摘要:接口接口作用是将请求映射到处理程序,以及预处理和处理后的拦截器列表,映射是基于一些标准的,其中的细节因不同的实现而不相同。该参数是类型,作用是检查所有的映射解析器或使用或为的,默认为,即从上下文中检查所有的。 概述 在Spring MVC启动章节https://segmentfault.com/a/1190000014674239,介绍到了DispatcherServlet的onRef...

    ralap 评论0 收藏0
  • SpringMVC源码分析--HandlerMapping(五)

    摘要:概述通过前三章的分析,我们简要分析了和,但对拦截器部分做详细的分析,拦截器的加载和初始化是三个相同的部分。 概述 通过前三章的分析,我们简要分析了SimpleUrlHandlerMapping、BeanNameUrlHandlerMapping和RequestMappingHandlerMapping,但对拦截器部分做详细的分析,拦截器的加载和初始化是三个HandlerMapping相...

    nanchen2251 评论0 收藏0
  • SpringMVC源码分析--HandlerMapping(六)

    摘要:概述上一节我们分析了的初始化过程,即创建并注册,本章我们分析下的请求处理过程,即查找。本系列文章是基于。最后创建了群方便大家交流,可扫描加入,同时也可加我,共同学习共同进步,谢谢 概述 上一节我们分析了RequestMappingHandlerMapping的初始化过程,即创建并注册HandlerMehtod,本章我们分析下RequestMappingHandlerMapping的请求...

    BDEEFE 评论0 收藏0
  • SpringMVC源码分析--HandlerMapping(三)

    摘要:与类图对比,类继承自抽象类,其又继承自抽象类,再往上继承关系与一致。创建初始化上一章我们分析了的创建初始化过程,的创建初始化过程与一样,方法的入口在抽象类中的方法。至此,代码编写完毕。 概述 本节我们继续分析HandlerMapping另一个实现类BeanNameUrlHandlerMapping,从类的名字可知,该类会根据请求的url与spring容器中定义的bean的name属性值...

    fsmStudy 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<