Spring MVC : 概念模型 HandlerMethodArgumentResolver

HandlerMethodArgumentResolverSpring MVC的一种策略接口。用于从指定的请求上下文中,解析出控制器方法某个参数MethodParameter对应的参数值。

HandlerMethodArgumentResolver接口约定了两个方法 :

  1. boolean supportsParameter(MethodParameter parameter)
    是否支持parameter指定的方法参数。
  2. Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest,WebDataBinderFactory binderFactory)
    从指定请求上下文中,将方法参数MethodParameter解析为参数值。这里需要解析的参数parameter一定符合如下条件:将其交给当前HandlerMethodArgumentResolver对象的方法supportsParameter,返回结果是true

基于该接口,Spring MVC提供了很多内置实现用于将请求上下文中的各种信息映射到控制器方法参数值。关于这些HandlerMethodArgumentResolver实现类的更多信息,可以参考"Spring MVC : 框架缺省的控制器方法参数解析器"。

package org.springframework.web.method.support;

/**
 * Strategy interface for resolving method parameters into argument values in
 * the context of a given request.
 *
 */
public interface HandlerMethodArgumentResolver {

	/**
	 * Whether the given MethodParameter method parameter is
	 * supported by this resolver.
	 * @param parameter the method parameter to check
	 * @return true if this resolver supports the supplied parameter;
	 * false otherwise
	 */
	boolean supportsParameter(MethodParameter parameter);

	/**
	 * Resolves a method parameter into an argument value from a given request.
	 * A ModelAndViewContainer provides access to the model for the
	 * request. A WebDataBinderFactory provides a way to create
	 * a WebDataBinder instance when needed for data binding and
	 * type conversion purposes.
	 * @param parameter the method parameter to resolve. This parameter must
	 * have previously been passed to #supportsParameter which must
	 * have returned true.
	 * @param mavContainer the ModelAndViewContainer for the current request
	 * @param webRequest the current request
	 * @param binderFactory a factory for creating WebDataBinder instances
	 * @return the resolved argument value, or null if not resolvable
	 * @throws Exception in case of errors with the preparation of argument values
	 */
	@Nullable
	Object resolveArgument(MethodParameter parameter, @Nullable ModelAndViewContainer mavContainer,
				NativeWebRequest webRequest, @Nullable WebDataBinderFactory binderFactory) 
				throws Exception;
}

参考文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值