Class AbstractNamedValueMethodArgumentResolver
- java.lang.Object
- org.springframework.messaging.handler.annotation.reactive.AbstractNamedValueMethodArgumentResolver
- All Implemented Interfaces:
HandlerMethodArgumentResolver,SyncHandlerMethodArgumentResolver
- Direct Known Subclasses:
DestinationVariableMethodArgumentResolver,HeaderMethodArgumentResolver
public abstract class AbstractNamedValueMethodArgumentResolver extends Object implements SyncHandlerMethodArgumentResolver
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 aConfigurableBeanFactoryis supplied to the class constructor.A
ConversionServiceis used to convert a resolved String argument value to the expected target method parameter type.- Since:
- 5.2
- Author:
- Rossen Stoyanchev
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static classAbstractNamedValueMethodArgumentResolver.NamedValueInfoRepresents a named value declaration.
Constructor Summary
Constructors Modifier Constructor Description protectedAbstractNamedValueMethodArgumentResolver(ConversionService conversionService, ConfigurableBeanFactory beanFactory)Constructor with aConversionServiceand aBeanFactory.
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected abstract AbstractNamedValueMethodArgumentResolver.NamedValueInfocreateNamedValueInfo(MethodParameter parameter)Create theAbstractNamedValueMethodArgumentResolver.NamedValueInfoobject for the given method parameter.protected abstract voidhandleMissingValue(String name, MethodParameter parameter, Message<?> message)Invoked when a value is required, butresolveArgumentInternal(org.springframework.core.MethodParameter, org.springframework.messaging.Message<?>, java.lang.String)returnednulland there is no default value.protected abstract ObjectresolveArgumentInternal(MethodParameter parameter, Message<?> message, String name)Resolves the given parameter type and value name into an argument value.ObjectresolveArgumentValue(MethodParameter parameter, Message<?> message)Resolve the value for the method parameter synchronously.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.reactive.HandlerMethodArgumentResolver
supportsParameter
Methods inherited from interface org.springframework.messaging.handler.invocation.reactive.SyncHandlerMethodArgumentResolver
resolveArgument
Constructor Detail
AbstractNamedValueMethodArgumentResolver
protected AbstractNamedValueMethodArgumentResolver(ConversionService conversionService, @Nullable ConfigurableBeanFactory beanFactory)
Constructor with aConversionServiceand 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
resolveArgumentValue
public Object resolveArgumentValue(MethodParameter parameter, Message<?> message)
Description copied from interface:SyncHandlerMethodArgumentResolverResolve the value for the method parameter synchronously.- Specified by:
resolveArgumentValuein interfaceSyncHandlerMethodArgumentResolver- Parameters:
parameter- the method parametermessage- the currently processed message- Returns:
- the resolved value, if any
createNamedValueInfo
protected abstract AbstractNamedValueMethodArgumentResolver.NamedValueInfo createNamedValueInfo(MethodParameter parameter)
Create theAbstractNamedValueMethodArgumentResolver.NamedValueInfoobject 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)
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
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)returnednulland 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