SpringMVC之RequestMappingHandlerMapping开篇

Posted 木叶之荣

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringMVC之RequestMappingHandlerMapping开篇相关的知识,希望对你有一定的参考价值。

这一段时间工作比较忙,自己也变得懒惰了一些,回头看看博客已经有半年多没有更新了。还是要让自己保持一颗不断学习的心的,就以SpringMVC的RequestMappingHandlerMapping的分析作为新的开始吧,本文所用的SpringMVC版本为5.1.5。我们在学习SpringMVC的时候,RequestMappingHandlerMapping和RequestMappingHandlerAdapter这两个类是我们需要经常打交道的两个类。在之前的文章中简单的分析过RequestMappingHandlerAdapter,在接下来的文章中,我们简单的分析下RequestMappingHandlerMapping这个类,本篇文章主要先列举下和RequestMappingHandlerMapping相关的一些类。
首先,我们先看下RequestMappingHandlerMapping这个类是做什么用的。在这个类的注释上是这么写的:

Creates @link RequestMappingInfo instances from type and method-level @link RequestMapping @RequestMapping 
annotations in @link Controller @Controller classes.

大概意思是为在标注@Controller注解的类中的@RequestMapping注解创建RequestMappingInfo实例。这句话乍看可能会不太明白,这个RequestMappingInfo又是个什么东西呢?在此之前先问大家一个问题,如果让你设计一个类似SpringMVC的框架的话,前端请求和后台处理类的映射应该怎么去做呢?我们看一下RequestMappingHandlerMapping这个类的UML图是什么样的:

我们来说和这次分析相关的一些类:

RequestMappingInfoHandlerMapping:

为RequestMappingInfo定义请求和应的处理类之间的映射关系的基类。

AbstractHandlerMethodMapping

实现HandlerMapping的一个抽象类,用来定义一个请求和HandlerMethod的映射关系。对于每一个注册的HandlerMethod,都由它的定义了详细映射类型的子类来维护一个唯一的映射关系。有点绕~

AbstractHandlerMapping

HandlerMapping的一个抽象实现,支持排序、有默认的请求处理类,默认的拦截器,包括由路径模式映射拦截器。

HandlerMapping

定义请求和请求处理类映射关系的一个接口。一个处理类通常会被组装为HandlerExecutionChain,在HandlerExecutionChain中会包含HandlerInterceptor的实例。上面这几个类的关系是:
RequestMappingHandlerMapping---->RequestMappingInfoHandlerMapping---->AbstractHandlerMethodMapping----> AbstractHandlerMapping---->HandlerMapping

RequestMappingInfo

保存请求映射信息的类。如:请求方法、请求参数、请求头信息等。

UrlPathHelper

为URL路径匹配提供帮助的类。

PathMatcher

基于字符串路径匹配的策略接口。默认实现是AntPathMatcher。主要在PathMatchingResourcePatternResolver、AbstractUrlHandlerMapping、WebContentInterceptor中使用。

以上是关于SpringMVC之RequestMappingHandlerMapping开篇的主要内容,如果未能解决你的问题,请参考以下文章

40 个 SpringBoot 常用注解:让生产力爆表!

springmvc学习笔记-springmvc整合mybatis之controller

springmvc学习笔记-springmvc整合mybatis之service

springmvc学习笔记(11)-springmvc注解开发之简单参数绑定

springmvc学习笔记(13)-springmvc注解开发之集合类型参数绑定

SpringMVC学习系列 之 初识SpringMVC