SpringMVC之源码分析--HandlerAdapter(一)

itjavashuai 2019-06-27

概述

本章开始,我们分析Spring MVC的另一个重要组件,即HandlerAdapter,从命名上我即可直观的理解为处理器适配器,那么处理器适配器是什么意思?Spring MVC为什么要使用处理器适配器即其要解决什么问题?以及Spring提供了哪些处理器适配器?带着这些问题,我们进行下面的分析。

本系列文章是基于Spring5.0.5RELEASE。

处理器适配器是什么

在介绍处理器适配器之前,我们先介绍什么是适配器,望文生义我们可以知道就是做适配的东西,比如在智能手机之前,我们用的手机五花八门,每种手机都对应着相应的充电器(有直充和座充),不同类型手机的充电器不能使用,当时市场有一款叫“万能充电器”的设备,它就是适配不通类型手机电池的,以达到使用相同设备为不同手机充电的要求。再比如现在笔记本电脑上几乎都没有VGA接口,在进行接入投影是,需要一个HDMI转VGA的转换器,这个设备也是为了适配投影仪接入的。说这么多就是想解释下什么是适配器。

那么处理器适配器又是什么呢?在Spring MVC中可以支持多种处理器(处理器也就是处理用户请求的程序),各种处理器中的处理方法各不相同,Spring为了解决适应多种处理器,定义了处理器适配器的概念,也就是我们所说的HandlerAdapter。

处理器适配器作用

Spring MVC为我们提供了多种处理用户的处理器(Handler),Spring实现的处理器类型有Servlet、Controller、HttpRequestHandler以及注解类型的处理器,即我们可以通过实现这些接口或者注解我们的类来使用这些处理器,那么针对不同类型的处理器,如何将用户请求转发到相应类型的处理器方法中的呢,这就需求Spring MVC的处理器适配器来完成适配操作,这就是处理器适配器要完成的工作。

Spring提供的处理器适配器

Spring为我们提供了四种处理器适配器,如下图:

SpringMVC之源码分析--HandlerAdapter(一)

  • SimpleServletHandlerAdapter 适配Servlet处理器
  • HttpRerquestHandlerAdapter 适配HttpRequestHandler处理器
  • RequestMappingHandlerAdapter 适配注解处理器
  • SimpleControllerHandlerAdapter 适配Controller处理器

Spring MVC默认使用的处理器适配器为:HttpRequestHandlerAdapter、SimpleServletHandlerAdapter、RequestMappingHandlerAdapter三种。

总结

Spring HandlerAdapter是适配器模式的实现,它的好处就是易扩展,在我们想增加一种处理时,只需要实现HandlerApapter就可以了,不用动任何其他存在的代码,这种模式符合开闭原则。

本节我们主要从整体以及概念上阐述了Spring的HandlerAdapter,后续会逐个分析Spring提供的四种适配器,希望本节对大家能有帮助,谢谢。

最后创建了qq群方便大家交流,可扫描加入,同时也可加我qq:276420284,共同学习、共同进步,谢谢!

SpringMVC之源码分析--HandlerAdapter(一)

相关推荐