自定义参数解析器需要实现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自带了一些其他的实现,我们可以根据需要来进行重写:
-
ServletRequestMethodArgumentResolver
和ServletResponseMethodArgumentResolver
处理了自动绑定
HttpServletRequest
和HttpServletResponse
-
RequestParamMapMethodArgumentResolver
处理了@RequestParam -
RequestHeaderMapMethodArgumentResolver
处理了@RequestHeader -
PathVariableMapMethodArgumentResolver
处理了@PathVariable -
ModelAttributeMethodProcessor
处理了@ModelAttribute -
RequestResponseBodyMethodProcessor
处理了@RequestBody