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, for example,
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 a
ConfigurableBeanFactory 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:
- 5.2
- Author:
- Rossen Stoyanchev
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected static classRepresents a named value declaration. -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedAbstractNamedValueMethodArgumentResolver(ConversionService conversionService, @Nullable ConfigurableBeanFactory beanFactory) Constructor with aConversionServiceand aBeanFactory. -
Method Summary
Modifier and TypeMethodDescriptionprotected 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(MethodParameter, Message, String)returnednulland there is no default value.resolveArgumentInternal(MethodParameter parameter, Message<?> message, String name) Resolves the given parameter type and value name into an argument value.resolveArgumentValue(MethodParameter parameter, Message<?> message) Resolve the value for the method parameter synchronously.Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface HandlerMethodArgumentResolver
supportsParameterMethods inherited from interface SyncHandlerMethodArgumentResolver
resolveArgument
-
Constructor Details
-
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 Details
-
resolveArgumentValue
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
protected abstract @Nullable 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(MethodParameter, Message, String)returnednulland there is no default value. Subclasses can throw an appropriate exception for this case.- Parameters:
name- the name for the valueparameter- the target method parametermessage- the message being processed
-