Spring mvc之HandlerMethodArgumentResolverComposite类

在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接口关系图.png

MatrixVariableMapMethodArgumentResolver、RedirectAttributesMethodArgumentResolver、ServletRequestMethodArgumentResolver、HandlerMethodArgumentResolverComposite、UriComponentsBuilderMethodArgumentResolver、AbstractWebArgumentResolverAdapter、ServletWebArgumentResolverAdapter、

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容