Class AbstractNamedValueMethodArgumentResolver
- java.lang.Object
- org.springframework.messaging.handler.annotation.support.AbstractNamedValueMethodArgumentResolver
- All Implemented Interfaces:
HandlerMethodArgumentResolver
- Direct Known Subclasses:
DestinationVariableMethodArgumentResolver
,HeaderMethodArgumentResolver
public abstract class AbstractNamedValueMethodArgumentResolver extends Object implements HandlerMethodArgumentResolver
Abstract base class to resolve method arguments from a named value, e.g. message headers or destination variables. Named values could have one or more of a name, a required flag, and a default value.Subclasses only need to define specific steps such as how to obtain named value details from a method parameter, how to resolve to argument values, or how to handle missing values.
A default value string can contain ${...} placeholders and Spring Expression Language
#{...}
expressions which will be resolved if aConfigurableBeanFactory
is supplied to the class constructor.A
ConversionService
is used to convert a resolved String argument value to the expected target method parameter type.- Since:
- 4.0
- Author:
- Rossen Stoyanchev, Juergen Hoeller
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static class
AbstractNamedValueMethodArgumentResolver.NamedValueInfo
Represents a named value declaration.
Constructor Summary
Constructors Modifier Constructor Description protected
AbstractNamedValueMethodArgumentResolver(ConversionService conversionService, ConfigurableBeanFactory beanFactory)
Constructor with aConversionService
and aBeanFactory
.
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected abstract AbstractNamedValueMethodArgumentResolver.NamedValueInfo
createNamedValueInfo(MethodParameter parameter)
Create theAbstractNamedValueMethodArgumentResolver.NamedValueInfo
object for the given method parameter.protected abstract void
handleMissingValue(String name, MethodParameter parameter, Message<?> message)
Invoked when a value is required, butresolveArgumentInternal(org.springframework.core.MethodParameter, org.springframework.messaging.Message<?>, java.lang.String)
returnednull
and there is no default value.protected void
handleResolvedValue(Object arg, String name, MethodParameter parameter, Message<?> message)
Invoked after a value is resolved.Object
resolveArgument(MethodParameter parameter, Message<?> message)
Resolves a method parameter into an argument value from a given message.protected abstract Object
resolveArgumentInternal(MethodParameter parameter, Message<?> message, String name)
Resolves the given parameter type and value name into an argument value.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.springframework.messaging.handler.invocation.HandlerMethodArgumentResolver
supportsParameter
Constructor Detail
AbstractNamedValueMethodArgumentResolver
protected AbstractNamedValueMethodArgumentResolver(ConversionService conversionService, @Nullable ConfigurableBeanFactory beanFactory)
Constructor with aConversionService
and aBeanFactory
.- Parameters:
conversionService
- conversion service for converting String values to the target method parameter typebeanFactory
- a bean factory for resolving${...}
placeholders and#{...}
SpEL expressions in default values
Method Detail
resolveArgument
public Object resolveArgument(MethodParameter parameter, Message<?> message) throws Exception
Description copied from interface:HandlerMethodArgumentResolver
Resolves a method parameter into an argument value from a given message.- Specified by:
resolveArgument
in interfaceHandlerMethodArgumentResolver
- Parameters:
parameter
- the method parameter to resolve. This parameter must have previously been passed toHandlerMethodArgumentResolver.supportsParameter(org.springframework.core.MethodParameter)
which must have returnedtrue
.message
- the currently processed message- Returns:
- the resolved argument value, or
null
- Throws:
Exception
- in case of errors with the preparation of argument values
createNamedValueInfo
protected abstract AbstractNamedValueMethodArgumentResolver.NamedValueInfo createNamedValueInfo(MethodParameter parameter)
Create theAbstractNamedValueMethodArgumentResolver.NamedValueInfo
object for the given method parameter. Implementations typically retrieve the method annotation by means ofMethodParameter.getParameterAnnotation(Class)
.- Parameters:
parameter
- the method parameter- Returns:
- the named value information
resolveArgumentInternal
@Nullable protected abstract Object resolveArgumentInternal(MethodParameter parameter, Message<?> message, String name) throws Exception
Resolves the given parameter type and value name into an argument value.- Parameters:
parameter
- the method parameter to resolve to an argument valuemessage
- the current requestname
- the name of the value being resolved- Returns:
- the resolved argument. May be
null
- Throws:
Exception
- in case of errors
handleMissingValue
protected abstract void handleMissingValue(String name, MethodParameter parameter, Message<?> message)
Invoked when a value is required, butresolveArgumentInternal(org.springframework.core.MethodParameter, org.springframework.messaging.Message<?>, java.lang.String)
returnednull
and there is no default value. Sub-classes can throw an appropriate exception for this case.- Parameters:
name
- the name for the valueparameter
- the target method parametermessage
- the message being processed
handleResolvedValue
protected void handleResolvedValue(@Nullable Object arg, String name, MethodParameter parameter, Message<?> message)
Invoked after a value is resolved.- Parameters:
arg
- the resolved argument valuename
- the argument nameparameter
- the argument parameter typemessage
- the message