Spring MVC系列【17】参数处理流程源码解析
> 有道无术,术尚可求,有术无道,止于术。 > > Spring MVC:5.3.20
文章目录
-
- 前言
-
- 获取处理适配器
-
- 进入适配器处理方法
-
- 参数解析器处理参数
-
- 3.1 27种参数解析器
- 3.2 缓存
- 3.3 执行参数解析
- 3.4 反射执行控制器方法
前言
在之前我们分析了Spring MVC支持多种方式将请求参数封装到对应的控制器方法参数中=》Spring MVC系列(3)- 获取请求参数的多种方式。
也简单分析了,请求进来都是由DispatcherServlet来进行处理的=》Spring MVC系列(7)-DispatcherServlet处理请求流程源码分析。
接下来我们以一个简单的控制类分析下Spring MVC处理参数的源码。
@RestController
@RequestMapping("/test")
public class TestController {
@GetMapping("/test")
public String test(@RequestParam("name") String name) {
return name;
}
}
1. 获取处理适配器
在DispatcherServlet的doDispatch()中,首先会获取映射处理器,也就是根据请求路径,获取到对应的控制器Controller中的方法,比如:
http://localhost:8080/test/test?name=zhangsan
=》 org.pearl.boot.tstudy.controller.TestController#test(String)
接着DispatcherServlet会根据处理器来获取处理适配器HandlerAdapter,由他它调用具体的方法对用户发来的请求来进行处理,源码如下: