自定参数解析器 HandlerMethodArgumentResolver

自定义参数解析器需要实现HandlerMethodArgumentResolver接口:

public interface HandlerMethodArgumentResolver {
    boolean supportsParameter(MethodParameter var1);

    Object resolveArgument(MethodParameter var1, ModelAndViewContainer var2, 
            NativeWebRequest var3, WebDataBinderFactory var4) throws Exception;
}
  • supportsParameter: 用于判定是否需要处理该参数分解,返回true为需要,返回false为不需要;当返回true的时候,就会调用resolveArgument()方法;
  • resolveArgument真正用于处理参数分解的方法,返回的Object就是处理以后映射到controller方法上面形参的对象

扩展: SpringMVC自带了一些其他的实现,我们可以根据需要来进行重写:

  • ServletRequestMethodArgumentResolverServletResponseMethodArgumentResolver处理了自动绑定
    HttpServletRequestHttpServletResponse
  • RequestParamMapMethodArgumentResolver处理了@RequestParam
  • RequestHeaderMapMethodArgumentResolver处理了@RequestHeader
  • PathVariableMapMethodArgumentResolver处理了@PathVariable
  • ModelAttributeMethodProcessor处理了@ModelAttribute
  • RequestResponseBodyMethodProcessor处理了@RequestBody

你可能感兴趣的:(自定参数解析器 HandlerMethodArgumentResolver)