在InvocableHandlerMethod中的一个实例。
类图如下:
image.png
通过委托给已注册的HandlerMethodArgumentResolvers列表来解析方法参数。以前解析的方法参数会被缓存以加快查找速度。
1. 属性和方法
1.1 属性
private final List<HandlerMethodArgumentResolver> argumentResolvers = new ArrayList<>();
private final Map<MethodParameter, HandlerMethodArgumentResolver> argumentResolverCache =
new ConcurrentHashMap<>(256);
2. HandlerMethodArgumentResolver接口
在给定请求的上下文中将方法参数解析为参数值的策略接口。
其接口定义如下:
public interface HandlerMethodArgumentResolver {
boolean supportsParameter(MethodParameter parameter);
@Nullable
Object resolveArgument(MethodParameter parameter, @Nullable ModelAndViewContainer mavContainer,
NativeWebRequest webRequest, @Nullable WebDataBinderFactory binderFactory) throws Exception;
}
2.1 supportsParameter方法
此解析器是否支持给定的方法参数。
2.2 resolveArgument方法
从给定请求将方法参数解析为参数值。ModelAndViewContainer为请求提供对模型的访问。WebDataBinderFactory提供了一种在数据绑定和类型转换需要时创建WebDataBinder实例的方法。
2.3 实现类
HandlerMethodArgumentResolver接口关系图.pngMatrixVariableMapMethodArgumentResolver、RedirectAttributesMethodArgumentResolver、ServletRequestMethodArgumentResolver、HandlerMethodArgumentResolverComposite、UriComponentsBuilderMethodArgumentResolver、AbstractWebArgumentResolverAdapter、ServletWebArgumentResolverAdapter、
网友评论