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 class
Represents a named value declaration. -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
AbstractNamedValueMethodArgumentResolver
(ConversionService conversionService, @Nullable ConfigurableBeanFactory beanFactory) Constructor with aConversionService
and aBeanFactory
. -
Method Summary
Modifier and TypeMethodDescriptionprotected 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(MethodParameter, Message, String)
returnednull
and 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, wait
Methods inherited from interface HandlerMethodArgumentResolver
supportsParameter
Methods inherited from interface SyncHandlerMethodArgumentResolver
resolveArgument
-
Constructor Details
-
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 Details
-
resolveArgumentValue
Description copied from interface:SyncHandlerMethodArgumentResolver
Resolve the value for the method parameter synchronously.- Specified by:
resolveArgumentValue
in 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.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
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)
returnednull
and 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
-