java
首页 > 软件编程 > java > SpringMVC适配器HandlerAdapter

浅析SpringMVC中的适配器HandlerAdapter

发布时间:2021-01-13 16:41:40 作者:阿南Nanth
这篇文章主要介绍了SpringMVC中的适配器HandlerAdapter的相关资料,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

自己写的java日志类和方法代码分享

2014-01-01
自己写的java日志类和方法代码分享

基于Java回顾之网络通信的应用分析

2013-05-05
基于Java回顾之网络通信的应用分析

Java开发中读取XML与properties配置文件的方法

2017-01-01
Java开发中读取XML与properties配置文件的方法

java实现飞机游戏代码

2020-09-09
java实现飞机游戏代码
最新更新

spring-boot @Component和@Bean的区别详解

2020-09-09
spring-boot @Component和@Bean的区别详解

spring boot 配置动态刷新实现详解

2020-09-09
spring boot 配置动态刷新实现详解

mybatis plus的3种查询方式(小结)

2020-09-09
mybatis plus的3种查询方式(小结)

Java自动读取指定文件夹下所有文件的方法

2020-09-09
Java自动读取指定文件夹下所有文件的方法
业界资讯

2021年元旦火车票什么时候买? 2021年火车票开售时间公布

2020-12-03
2021年元旦火车票什么时候买? 2021年火车票开售时间公布

IntelliJ IDEA 2020.3 EAP5:引入 ML 编码,Git Stage 支持

2020-12-01
IntelliJ IDEA 2020.3 EAP5:引入 ML 编码,Git Stage 支持

2021年放假安排时间表什么时候出? 2021年国家法定假日公布

2020-11-27
2021年放假安排时间表什么时候出? 2021年国家法定假日公布

最新阿里云盘邀请码 (共17个邀请码) 亲测有效

2020-11-23
最新阿里云盘邀请码 (共17个邀请码) 亲测有效

电脑版 - 返回首页

2006-2021 脚本之家 JB51.Net , All Rights Reserved.
苏ICP备14036222号