自定参数解析器 HandlerMethodArgumentRes
2019-11-05 本文已影响0人
造一个大大的轮子
自定义参数解析器需要实现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