用于在给定请求的上下文中将方法参数解析为参数值的策略接口。
该接口允许开发者自定义如何从HTTP请求中提取参数并将其绑定到控制器方法参数上。
Spring MVC中已经提供了相应的 HandlerMethodArgumentResolver
实现,来处理 @RequestParam
、@RequestHeader
、 @PathVariable
、@RequestBody
等注解参数。
可以实现 HandlerMethodArgumentResolver
接口,来自定义自己的控制器参数绑定逻辑.
一、源码
1 2 3 4 5 6 7 8 9
| public interface HandlerMethodArgumentResolver {
boolean supportsParameter(MethodParameter parameter);
@Nullable Object resolveArgument(MethodParameter parameter, @Nullable ModelAndViewContainer mavContainer, NativeWebRequest webRequest, @Nullable WebDataBinderFactory binderFactory) throws Exception;
}
|
supportsParameter
方法,用来判断该解析器是否支持给定的方法参数,支持返回 true,不支持返回 false
resolveArgument
方法,用来解析来自请求的参数值赋值给方法参数,其几个参数如下:
MethodParameter parameter
,用来解析的方法参数。这个参数之前必须传递给过 supportsParameter
方法,且 supportsParameter
方法返回true
ModelAndViewContainer mavContainer
,当前请求的 ModelAndViewContainer
NativeWebRequest webRequest
,当前请求
WebDataBinderFactory binderFactory
,创建 WebDataBinder
的示例
二、实现类一览
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| MapMethodProcessor (org.springframework.web.method.annotation) PathVariableMapMethodArgumentResolver (org.springframework.web.servlet.mvc.method.annotation) AbstractNamedValueMethodArgumentResolver (org.springframework.web.method.annotation) RequestHeaderMethodArgumentResolver (org.springframework.web.method.annotation) RequestAttributeMethodArgumentResolver (org.springframework.web.servlet.mvc.method.annotation) RequestParamMethodArgumentResolver (org.springframework.web.method.annotation) AbstractCookieValueMethodArgumentResolver (org.springframework.web.method.annotation) SessionAttributeMethodArgumentResolver (org.springframework.web.servlet.mvc.method.annotation) MatrixVariableMethodArgumentResolver (org.springframework.web.servlet.mvc.method.annotation) ExpressionValueMethodArgumentResolver (org.springframework.web.method.annotation) PathVariableMethodArgumentResolver (org.springframework.web.servlet.mvc.method.annotation) RequestHeaderMapMethodArgumentResolver (org.springframework.web.method.annotation) ModelAttributeMethodProcessor (org.springframework.web.method.annotation) ServletModelAttributeMethodProcessor (org.springframework.web.servlet.mvc.method.annotation) SessionStatusMethodArgumentResolver (org.springframework.web.method.annotation) RequestParamMapMethodArgumentResolver (org.springframework.web.method.annotation) PrincipalMethodArgumentResolver (org.springframework.web.servlet.mvc.method.annotation) UriComponentsBuilderMethodArgumentResolver (org.springframework.web.servlet.mvc.method.annotation) CurrentSecurityContextArgumentResolver (org.springframework.security.web.method.annotation) HandlerMethodArgumentResolverComposite (org.springframework.web.method.support) RedirectAttributesMethodArgumentResolver (org.springframework.web.servlet.mvc.method.annotation) MatrixVariableMapMethodArgumentResolver (org.springframework.web.servlet.mvc.method.annotation) CsrfTokenArgumentResolver (org.springframework.security.web.method.annotation) ErrorsMethodArgumentResolver (org.springframework.web.method.annotation) AuthenticationPrincipalArgumentResolver (org.springframework.security.web.bind.support) ServletResponseMethodArgumentResolver (org.springframework.web.servlet.mvc.method.annotation) ModelMethodProcessor (org.springframework.web.method.annotation) ContinuationHandlerMethodArgumentResolver (org.springframework.web.servlet.mvc.method.annotation) AbstractMessageConverterMethodArgumentResolver (org.springframework.web.servlet.mvc.method.annotation) RequestPartMethodArgumentResolver (org.springframework.web.servlet.mvc.method.annotation) AbstractMessageConverterMethodProcessor (org.springframework.web.servlet.mvc.method.annotation) AuthenticationPrincipalArgumentResolver (org.springframework.security.web.method.annotation) AbstractWebArgumentResolverAdapter (org.springframework.web.method.annotation) ServletWebArgumentResolverAdapter (org.springframework.web.servlet.mvc.method.annotation) ServletRequestMethodArgumentResolver (org.springframework.web.servlet.mvc.method.annotation)
|
相关链接
OB links
[[RequestParamMapMethodArgumentResolver]]
[[RequestParamMethodArgumentResolver]]
#Spring #SpringMVC