Spring mvc之HandlerMethodArgument

2021-04-11  本文已影响0人  engineer_tang

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

上一篇下一篇

猜你喜欢

热点阅读