时间:2021-05-19
DispatcherServlte的initHandlerAdapters方法根据配置文件信息把HandlerAdapter注册到handlerAdapters(List)中。
如果在配置文件中没有配置,默认配置会读取DispatcherServlte.properties文件,该文件中配置了三种HandlerAdapter:HttpRequestHandlerAdapter,SimpleControllerHandlerAdapter和AnnotationMethodHandlerAdapter。
SimpleControllerHandlerAdapter :继承Controller方式所使用的适配器HttpRequestHandlerAdapter :HTTP请求处理器适配器RequestMappingHandlerAdapter :注解方式(@Controller)的处理器适配器getHandler方法根据请求遍历注册到handlerAdapters中的适配器拿到对应的适配器处理。
for (HandlerMapping hm : this.handlerMappings) { HandlerExecutionChain handler = hm.getHandler(request); if (handler != null) { return handler; }}HandlerAdapter接口有三个方法:
supports方法:是判断该适配器是否支持这个HandlerMethod,就是当得到一个handler时,该接口子类该方法做判断(就是类似handler instanceof Controller的判断方式),用来得到适配这个handler的适配器子类。
handle方法:用来执行控制器处理函数,获取ModelAndView 。就是根据该适配器调用规则执行handler方法。
如果正常编写调用,就需要使用多个if else判断instance of
if(handler instanceof HttpRequestHandler){ handle1();//HttpRequestHandler的处理方式} else if (handler instanceof Controller){ handle2();//Controller的处理方式} else if (handler instanceof Servlet){ handle3();//Servlet的处理方式}这种方法再添加新的处理器实现方式,就需要修改源码,新增else添加处理逻辑,不符合对扩展开放,对修改关闭原则。使用了HandlerAdapter后,当需要新增一种处理器(Controller)时,只需要新增一个HandlerAdapter即可,判断逻辑在他的supports方法中,处理逻辑在handle中,不需要修改任何其他代码。
到此这篇关于浅析SpringMVC中的适配器HandlerAdapter的文章就介绍到这了,更多相关SpringMVC适配器HandlerAdapter内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了Java适配器模式应用之电源适配器功能。分享给大家供大家参考,具体如下:一、模式定义存在两种适配器模式1对象适配器模式,在这种适配器模式中,适配器
什么是蓝牙适配器蓝牙适配器使用操作教程什么是蓝牙适配器蓝牙适配器使用操作教程什么是蓝牙适配器蓝牙适配器使用操作教程什么是蓝牙适配器蓝牙适配器使用操作教程什么是蓝
什么是蓝牙适配器蓝牙适配器使用操作教程什么是蓝牙适配器蓝牙适配器使用操作教程什么是蓝牙适配器蓝牙适配器使用操作教程什么是蓝牙适配器蓝牙适配器使用操作教程什么是蓝
本文实例讲述了PHP设计模式之适配器模式原理与用法。分享给大家供大家参考,具体如下:一、什么是适配器模式适配器模式有两种:类适配器模式和对象适配器模式。其中类适
外部设备必须通过接口适配器与主机相连。 在计算机中,适配器通常内置于可插入主板上插槽的卡中(也有外置的)。卡中的适配信息与处理器和适配器支持的设备间进行交换。