在InvocableHandlerMethod中的一個(gè)實(shí)例。
類(lèi)圖如下:
image.png
通過(guò)委托給已注冊(cè)的HandlerMethodArgumentResolvers列表來(lái)解析方法參數(shù)呜舒。以前解析的方法參數(shù)會(huì)被緩存以加快查找速度。
1. 屬性和方法
1.1 屬性
private final List<HandlerMethodArgumentResolver> argumentResolvers = new ArrayList<>();
private final Map<MethodParameter, HandlerMethodArgumentResolver> argumentResolverCache =
new ConcurrentHashMap<>(256);
2. HandlerMethodArgumentResolver接口
在給定請(qǐng)求的上下文中將方法參數(shù)解析為參數(shù)值的策略接口尚洽。
其接口定義如下:
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方法
此解析器是否支持給定的方法參數(shù)夷家。
2.2 resolveArgument方法
從給定請(qǐng)求將方法參數(shù)解析為參數(shù)值。ModelAndViewContainer為請(qǐng)求提供對(duì)模型的訪問(wèn)帝美。WebDataBinderFactory提供了一種在數(shù)據(jù)綁定和類(lèi)型轉(zhuǎn)換需要時(shí)創(chuàng)建WebDataBinder實(shí)例的方法碍彭。
2.3 實(shí)現(xiàn)類(lèi)
HandlerMethodArgumentResolver接口關(guān)系圖.png
MatrixVariableMapMethodArgumentResolver、RedirectAttributesMethodArgumentResolver悼潭、ServletRequestMethodArgumentResolver庇忌、HandlerMethodArgumentResolverComposite、UriComponentsBuilderMethodArgumentResolver舰褪、AbstractWebArgumentResolverAdapter漆枚、ServletWebArgumentResolverAdapter、