SpringBoot核心技术-Web开发-请求参数解析原理

  • HandlerMapping中找到能处理请求的Handler(Controller.method())
  • 为当前Handler 找一个适配器 HandlerAdapter; RequestMappingHandlerAdapter
  • 适配器执行目标方法并确定方法参数的每一个值

1、HandlerAdapter

SpringBoot核心技术-Web开发-请求参数解析原理

第一个:支持方法上标注的@RequestMapping

第二个:支持函数式编程

.....

2、执行目标方法

// Actually invoke the handler.
//DispatcherServlet -- doDispatch
mv = ha.handle(processedRequest, response, mappedHandler.getHandler());
===========RequestMappingHandlerAdapter类中的handleInternal方法==========
mav = invokeHandlerMethod(request, response, handlerMethod); //执行目标方法


//ServletInvocableHandlerMethod
Object returnValue = invokeForRequest(webRequest, mavContainer, providedArgs);
//获取方法的参数值
Object[] args = getMethodArgumentValues(request, mavContainer, providedArgs);

3、设置参数解析器

参数解析器:确定将要执行的目标方法的每个参数的值是什么

SpringMVC目标方法能写多少种参数类型,取决于参数解析器。

SpringBoot核心技术-Web开发-请求参数解析原理

SpringBoot核心技术-Web开发-请求参数解析原理

上一篇:08 事件池


下一篇:Python技法3:匿名函数、回调函数和高阶函数