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 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
Modifier and TypeClassDescriptionprotected static class
Represents a named value declaration. -
Constructor Summary
ModifierConstructorDescriptionprotected
AbstractNamedValueMethodArgumentResolver
(ConversionService conversionService, 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(org.springframework.core.MethodParameter, org.springframework.messaging.Message<?>, java.lang.String)
returnednull
and there is no default value.protected abstract Object
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 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 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
@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)
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
-