美文网首页
Spring mvc之HandlerMethodArgument

Spring mvc之HandlerMethodArgument

作者: engineer_tang | 来源:发表于2021-04-11 00:40 被阅读0次

    在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、

    相关文章

      网友评论

          本文标题:Spring mvc之HandlerMethodArgument

          本文链接:https://www.haomeiwen.com/subject/cjwahltx.html