org.springframework.web.method.support
Class HandlerMethodArgumentResolverComposite
java.lang.Object
org.springframework.web.method.support.HandlerMethodArgumentResolverComposite
- All Implemented Interfaces:
- HandlerMethodArgumentResolver
public class HandlerMethodArgumentResolverComposite
- extends java.lang.Object
- implements HandlerMethodArgumentResolver
Resolves method parameters by delegating to a list of registered HandlerMethodArgumentResolver
s.
Previously resolved method parameters are cached for faster lookups.
- Since:
- 3.1
- Author:
- Rossen Stoyanchev
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
logger
protected final Log logger
argumentResolvers
private final java.util.List<HandlerMethodArgumentResolver> argumentResolvers
argumentResolverCache
private final java.util.Map<MethodParameter,HandlerMethodArgumentResolver> argumentResolverCache
HandlerMethodArgumentResolverComposite
public HandlerMethodArgumentResolverComposite()
getResolvers
public java.util.List<HandlerMethodArgumentResolver> getResolvers()
- Return a read-only list with the contained resolvers, or an empty list.
supportsParameter
public boolean supportsParameter(MethodParameter parameter)
- Whether the given method parameter is supported by any registered
HandlerMethodArgumentResolver
.
- Specified by:
supportsParameter
in interface HandlerMethodArgumentResolver
- Parameters:
parameter
- the method parameter to check
- Returns:
true
if this resolver supports the supplied parameter;
false
otherwise
resolveArgument
public java.lang.Object resolveArgument(MethodParameter parameter,
ModelAndViewContainer mavContainer,
NativeWebRequest webRequest,
WebDataBinderFactory binderFactory)
throws java.lang.Exception
- Iterate over registered
HandlerMethodArgumentResolver
s and invoke the one that supports it.
- Specified by:
resolveArgument
in interface HandlerMethodArgumentResolver
- Parameters:
parameter
- the method parameter to resolve. This parameter must
have previously been passed to
HandlerMethodArgumentResolver.supportsParameter(org.springframework.core.MethodParameter)
and it must have returned true
mavContainer
- the ModelAndViewContainer for the current requestwebRequest
- the current requestbinderFactory
- a factory for creating WebDataBinder
instances
- Returns:
- the resolved argument value, or
null
.
- Throws:
java.lang.IllegalStateException
- if no suitable HandlerMethodArgumentResolver
is found.
java.lang.Exception
- in case of errors with the preparation of argument values
getArgumentResolver
private HandlerMethodArgumentResolver getArgumentResolver(MethodParameter parameter)
- Find a registered
HandlerMethodArgumentResolver
that supports the given method parameter.
addResolver
public HandlerMethodArgumentResolverComposite addResolver(HandlerMethodArgumentResolver argumentResolver)
- Add the given
HandlerMethodArgumentResolver
.
addResolvers
public HandlerMethodArgumentResolverComposite addResolvers(java.util.List<? extends HandlerMethodArgumentResolver> argumentResolvers)
- Add the given
HandlerMethodArgumentResolver
s.