栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringBoot中请求响应源码解析(寻找合适的适配器以及参数解析)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringBoot中请求响应源码解析(寻找合适的适配器以及参数解析)

SpringBoot中请求响应源码解析(寻找合适的handler)

上文通过源码明白如何寻找handler(Controller method),本文继续深入讲解后续操作即为handler寻找对应的handler适配器

1、了解HandlerAdapter

HandlerAdapter是一个接口,有两个函数

一个是supports(Object),返回类型是boolean,判断适配器是否适配对应的handler。

另一个是handle,正式执行并返回ModelAndView.

在该断点处 step into查看有哪些适配器以及如何找到适配器

四种适配器

 0、RequestMappingHandlerAdapter:该适配器支持方法上带注解@RequestMapping

1、HandlerFunctionAdapter:该适配器支持函数式编程的xxxxx

2与3很少用到,未深入理解。

经过上述遍历匹配将返回合适的HandlerAdapter到ha

2、执行目标方法

找到HandlerAdapter后调用handle方法正式执行,下一个断点定位到此处,查看如何执行目标方法。

 在断点处step into进入

 step into

 step into

 参数解析器(我这版本的springBoot中共27种)

举例:如果是第0号的RequestParamMethodArgumentResolver,该解析器用于解析handler中用@RequestParam修饰的参数。

 返回值处理器(我这版本的有15个)

举例:如果返回类型是ModelAndView则用下标为0的处理器

 当参数全部封装完毕后,定位到下图中的代码,并step into

 step into后进入下图代码段,invokeForRequest()用于请求处理

 

 在handler中打断点后重新debug,可以发现invokeForRequest()执行后进入handler中的断点,因此可以断定,invokeForRequest()就是处理请求的方法。在invokeForRequest()上step into

在该断点处step into

 解析后的参数值如下:

 对应handler中的8个参数

 

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/860791.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号