HandlerMethodArgumentResolver
Spring的参数解析器顶层接口,将 HttpServletRequest(header + body 中的内容)解析为对应参数类型的对象,其中定义了2个方法
public interface HandlerMethodArgumentResolver {
//是否支持解析该参数
boolean supportsParameter(MethodParameter parameter);
//解析参数
Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer,
NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception;
}
Spring启动时默认加载的HandlerMethodArgumentResolver实现类
- RequestAttributeMethodArgumentResolver
- SessionAttributeMethodArgumentResolver
- ServletRequestMethodArgumentResolver
- ServletResponseMethodArgumentResolver
- RedirectAttributesMethodArgumentResolver
- ModelMethodProcessor
HandlerMethodArgumentResolver 的设计模式
- 策略模式:顶层 HandlerMethodArgumentResolver定义解析参数的方法,根据不同得策略实现对应的子类
- 责任链模式:HandlerMethodArgumentResolverComposite.
argumentResolvers循环遍历解析器,能解析则直接解析,不能则向下传递
- 模版模式:AbstractMessageConverterMethodArgumentResolver中定义解析参数的主逻辑, 子类 HttpEntityMethodProcessor | RequestResponseBodyMethodProcessor实现具体的逻辑
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。