SpringMVC源码分析之一AbstractHandlerMapping

目录

前言:

HandlerMapping组件介绍

HandlerMapping体系结构介绍

2.1、AbstractHandlerMapping类

2.1.1、简要介绍

2.1.2、类的属性

2.1.2、类的方法

initApplicationContext()方法

1、getHandler()方法

2、getHandlerExecutionChain()方法

*

2.2、AbstractUrlHandlerMapping类

2.2.1、类的属性

2.2.2、类的核心方法

2.2.2.1、registerHandler()方法

2.2.2.2、getHandlerInternal()方法

lookupHandler方法

buildPathExposingHandler方法

2.3、AbstractHandlerMethodMapping类

2.3.2、核心方法

2.3.2.1、initHandlerMethods方法

detectHandlerMethods方法

2.3.2.2、getHandlerInternal方法

lookupHandlerMethod()方法


前言:

   我们在之前的博文 SpringMVC原理分析之一MVC框架 中已经介绍了SpringMVC的处理一次请求的大致流程,为了节省篇幅在流程介绍中省去了核心九大组件的介绍。下面我们来看一看九大组件之一的处理器映射器的相关原理。本篇博文分析的spring版本为5.2.7.RELEASE。

  • HandlerMapping组件介绍

HandlerMapping接口定义主要用来提供request 请求对象和Handler 对象 映射关系的接口。所谓request对象比如我们web应用中的http 请求,Handler对象则指的是对应rquest请求的相关处理逻辑。该接口只有一个方法getHandler(),其实大部分情况下该方法并不是返回单纯的Handler处理器而是将该对象包装成包含Handler处理器和若干个与之匹配的interceptor 拦截器对象列表。

HandlerExecutionChain getHandler(HttpServletRequest request) throws Exception;

 

该请求对象入参是Http对应的请求对象,返回会值是HandlerExecutionChain对象,该对象包含一个处理器对象Handler和匹配该处理器的若干interceptors 拦截器列表

 

如上是HandlerMapping接口以及其目前所有子类的UML类图,从类图中可以看到HandlerMapping有一个初始的抽象类AbstractHandlerMapping,在该抽象类,分成两个体系一个是以AbstractUrlHandlerMapping(url和类级别的Handler处理器映射 url ->Controller)

一个是AbstractHandlerMethodMapping(url和method方法级别的Handler处理器,点到为止),下面就让我们通过源码来一起了解一下处理器映射器组件的相关功能。由于篇幅限制,此篇博文对于我们先对上述的两大分类的HandlerMaping进行分析。关于两大分类的博文扩展分析我们分别在后面的博客中进行介绍。

  • HandlerMapping体系结构介绍

2.1、AbstractHandlerMapping类

2.1.1、简要介绍

  AbstractHandlerMapping是HandlerMapping的抽象实现,同时实现了Order接口继承了WebApplicationObjectSupport类,order接口主要是为了如果spring容器中有多个HandlerMapping,则按照order 排序去一次使用HandlerMapping获取handler对象,order小的优先被使用。由于该处理器抽象类继承WebApplicationObjectSupport对象,通过查看WebApplicationObjectSupport的继承关系,其也间接实现了ApplicationContextAware和ServlerContextAware,意味着该类在spring容器中被初始化完成后自动拥有ApplicationContext对象和ServletContext对象。

 

2.1.2、类的属性

   分析一个类需要看该类的相关属性和方法(排除掉无意义的set/get方法)。下面就是罗列的AbstractHandlerMapping类的属性和方法

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值