RequestMappingHandlerAdapter中注册了很多参数解析的解析器,在方法getDefaultArgumentResolvers中可以查看到
这是本次测试的函数:
public Map<String, Object> get(HttpServletRequest request, @RequestParam(name = "qwe") String qwe)
RequestMappingHandlerAdapter(invokeHandlerMethod方法)-> ServletInvocableHandlerMethod(invokeAndHandle方法)->
ServletInvocableHandlerMethod(invokeForRequest方法) -> ServletInvocableHandlerMethod(getMethodArgumentValues方法) ->
HandlerMethodArgumentResolverComposite(resolveArgument方法) -> (参数HttpServletRequest类型)ServletRequestMethodArgumentResolver(resolveArgument方法)
这里说明一下这次使用的参数解析器
ServletRequestMethodArgumentResolver
参数类型是实现或继承或是WebRequest、ServletRequest、MultipartRequest、HttpSession、Principal、Locale、TimeZone、InputStream、Reader、HttpMethod这些类
RequestParamMethodArgumentResolver
支持带有@RequestParam注解的参数或带有MultipartFile类型的参数