深入剖析Spring Web源码(十二) - 处理器映射,处理器适配器以及处理器的实现 - 处理器适配器的实现架构

来源:互联网 发布:php 输入框 提示信息 编辑:程序博客网 时间:2024/05/20 23:06

4.2.2.2 处理器适配器的实现架构

 

作为总控制器的派遣器Servlet通过处理器映射得到处理器后,会轮询处理器适配器模块,查找能够处理当前HTTP请求的处理器适配器的实现,处理器适配器模块根据处理器映射返回的处理器类型,例如,简单的控制器类型,注解控制器类型或者远程调用处理器类型来选择某一个适当的处理器适配器的实现来适配当前的HTTP请求。前一小节中,我们根据流程的实现分析了简单控制器处理器适配器 (SimpleControllerHandlerAdapter),注解方法处理器适配器(AnnotationMethodHandlerAdapter)HTTP请求处理器适配器(HttpRequestHandlerAdapter)的架构实现。事实上,还有另外一个简单的处理器适配器可以将请求适配到一个已存Servlet的实现。如下类图所示,

 

 

图表 430

 

处理器适配器的实现体系架构简单明了,体系架构中的针对不同流程的处理器适配器的实现基本不共用任何逻辑和抽象类,它们互相独立自成独立的模块。我们已经在上一小节对基于流程的实现的剖析中已经对处理器适配器的三个实现进行了深入剖析,事实上在处理器适配器架构上还有另外一个实现,就是简单Servlet处理器适配器的实现,它简单的将HTTP请求适配到Servlet进行处理。下面我们对每一个处理器适配器的功能实现进行分析。

 

l         简单控制器处理器适配器(SimpleControllerHandlerAdapter)

 

这个实现类将HTTP请求适配到一个控制器的实现进行处理。这里控制器的实现是一个简单的控制器接口的实现。简单控制器处理器适配器被设计成一个框架类的实现,不需要被改写,客户化的业务逻辑通常是在控制器接口的实现类中实现的。

 

l         注解方法处理器适配器(AnnotationMethodHandlerAdapter)

 

从上一小节对流程的分析得知,这个类的实现是基于注解的实现,它需要结合注解方法映射和注解方法处理器协同工作。它通过解析声明在注解控制器的请求映射信息来解析相应的处理器方法来处理当前的HTTP请求。在处理的过程中,它通过反射来发现探测处理器方法的参数,调用处理器方法,并且映射返回值到模型和控制器对象,最后返回模型和控制器对象给作为主控制器的派遣器Servlet

 

l         HTTP请求处理器适配器(HttpRequestHandlerAdapter)

 

HTTP请求处理器适配器仅仅支持对HTTP请求处理器的适配。它简单的将HTTP请求对象和响应对象传递给HTTP请求处理器的实现,它并不需要返回值。它主要应用在基于HTTP的远程调用的实现上。

 

l         简单Servlet处理器适配器(SimpleServletHandlerAdapter)

 

这个实现能够将一个HTTP请求传递给一个Servlet规范中定义的Servlet的实现进行处理。它的应用并不广泛,主要应用在适配到一个已有的Servlet的实现以达到重用的目的。基于简单控制器流程的实现中,有个相似的类ServletWrappingController实现了同样的业务逻辑。

 

既然我们在前一些小节中对大部分的实现类进行了架构分析和代码注释,这里我们只对简单Servlet处理器适配器进行分析,如下代码注释,

 

 

原创粉丝点击