跳到主要内容

Spring MVC系列【17】参数处理流程源码解析

> 有道无术,术尚可求,有术无道,止于术。 > > Spring MVC:5.3.20

文章目录

    • 前言
    1. 获取处理适配器
    1. 进入适配器处理方法
    1. 参数解析器处理参数
    • 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. 获取处理适配器

DispatcherServletdoDispatch()中,首先会获取映射处理器,也就是根据请求路径,获取到对应的控制器Controller中的方法,比如:

http://localhost:8080/test/test?name=zhangsan
=》 org.pearl.boot.tstudy.controller.TestController#test(String)

接着DispatcherServlet会根据处理器来获取处理适配器HandlerAdapter,由他它调用具体的方法对用户发来的请求来进行处理,源码如下: