spring参数绑定
- 调用 DispatcherServlet 的 doDispatcher
- 调用 HttpRequestHandlerAdapter 的 handle(HttpServletRequest request, HttpServletResponse response, Object handler)
- 直到调用 InvocableHandlerMethod.invokeForRequest,通过此方法解析请求参数的值
-
- HandlerMethodArgumentResolverComposite.resolveArgument*来获取对应的 HandlerMethodArgumentResolver 来解析参数
- 如果是@RequestParam参数,会去获取 RequestParamMethodArgumentResolver 来解析绑定参数,最后调用该解析器的 request.getParameterValues(name) 来获取参数值
- 如果是@RequestBody参数,会获取到 RequestResponseBodyMethodProcessor 来解析参数,最后通过调用 AbstractJackson2HttpMessageConverter.read 方法,通过 jackson 来解析参数
- 如果直接参数为对象,会获取到 ModelAttributeMethodProcessor 来解析参数,会先去创建一个对象,然后通过 ServletRequestDataBinder.bind 方法,再通过 BeanWrapperImpl.invoke 方法调用对象的set方法,将值绑定到对象上