Class AbstractNamedValueArgumentResolver
java.lang.Object
org.springframework.web.reactive.result.method.HandlerMethodArgumentResolverSupport
org.springframework.web.reactive.result.method.annotation.AbstractNamedValueArgumentResolver
- All Implemented Interfaces:
 HandlerMethodArgumentResolver
- Direct Known Subclasses:
 AbstractNamedValueSyncArgumentResolver,SessionAttributeMethodArgumentResolver
public abstract class AbstractNamedValueArgumentResolver
extends HandlerMethodArgumentResolverSupport
Abstract base class for resolving method arguments from a named value.
 Request parameters, request headers, and path variables are examples of named
 values. Each may have a name, a required flag, and a default value.
 
Subclasses define how to do the following:
- Obtain named value information for a method parameter
 - Resolve names into argument values
 - Handle missing argument values when argument values are required
 - Optionally handle a resolved value
 
A default value string can contain ${...} placeholders and Spring Expression
 Language #{...} expressions. For this to work a
 ConfigurableBeanFactory must be supplied to the class constructor.
- Since:
 - 5.0
 - Author:
 - Rossen Stoyanchev
 
- 
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected static classRepresents the information about a named value, including name, whether it's required and a default value. - 
Field Summary
Fields inherited from class org.springframework.web.reactive.result.method.HandlerMethodArgumentResolverSupport
logger - 
Constructor Summary
ConstructorsConstructorDescriptionAbstractNamedValueArgumentResolver(ConfigurableBeanFactory factory, ReactiveAdapterRegistry registry) Create a newAbstractNamedValueArgumentResolverinstance. - 
Method Summary
Modifier and TypeMethodDescriptionprotected abstract AbstractNamedValueArgumentResolver.NamedValueInfocreateNamedValueInfo(MethodParameter parameter) Create theAbstractNamedValueArgumentResolver.NamedValueInfoobject for the given method parameter.protected voidhandleMissingValue(String name, MethodParameter parameter) Invoked when a named value is required, butresolveName(String, MethodParameter, ServerWebExchange)returnednulland there is no default value.protected voidhandleMissingValue(String name, MethodParameter parameter, ServerWebExchange exchange) Invoked when a named value is required, butresolveName(String, MethodParameter, ServerWebExchange)returnednulland there is no default value.protected voidhandleResolvedValue(Object arg, String name, MethodParameter parameter, Model model, ServerWebExchange exchange) Invoked after a value is resolved.reactor.core.publisher.Mono<Object>resolveArgument(MethodParameter parameter, BindingContext bindingContext, ServerWebExchange exchange) Resolve the value for the method parameter.protected abstract reactor.core.publisher.Mono<Object>resolveName(String name, MethodParameter parameter, ServerWebExchange exchange) Resolve the given parameter type and value name into an argument value.Methods inherited from class org.springframework.web.reactive.result.method.HandlerMethodArgumentResolverSupport
checkAnnotatedParamNoReactiveWrapper, checkParameterType, checkParameterTypeNoReactiveWrapper, getAdapterRegistryMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.springframework.web.reactive.result.method.HandlerMethodArgumentResolver
supportsParameter 
- 
Constructor Details
- 
AbstractNamedValueArgumentResolver
public AbstractNamedValueArgumentResolver(@Nullable ConfigurableBeanFactory factory, ReactiveAdapterRegistry registry) Create a newAbstractNamedValueArgumentResolverinstance.- Parameters:
 factory- a bean factory to use for resolving${...}placeholder and#{...}SpEL expressions in default values, ornullif default values are not expected to contain expressionsregistry- for checking reactive type wrappers
 
 - 
 - 
Method Details
- 
resolveArgument
public reactor.core.publisher.Mono<Object> resolveArgument(MethodParameter parameter, BindingContext bindingContext, ServerWebExchange exchange) Description copied from interface:HandlerMethodArgumentResolverResolve the value for the method parameter.- Parameters:
 parameter- the method parameterbindingContext- the binding context to useexchange- the current exchange- Returns:
 Monofor the argument value, possibly empty
 - 
createNamedValueInfo
protected abstract AbstractNamedValueArgumentResolver.NamedValueInfo createNamedValueInfo(MethodParameter parameter) Create theAbstractNamedValueArgumentResolver.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
 
 - 
resolveName
protected abstract reactor.core.publisher.Mono<Object> resolveName(String name, MethodParameter parameter, ServerWebExchange exchange) Resolve the given parameter type and value name into an argument value.- Parameters:
 name- the name of the value being resolvedparameter- the method parameter to resolve to an argument value (pre-nested in case of aOptionaldeclaration)exchange- the current exchange- Returns:
 - the resolved argument (may be empty 
Mono) 
 - 
handleMissingValue
protected void handleMissingValue(String name, MethodParameter parameter, ServerWebExchange exchange) Invoked when a named value is required, butresolveName(String, MethodParameter, ServerWebExchange)returnednulland there is no default value. Subclasses typically throw an exception in this case.- Parameters:
 name- the name for the valueparameter- the method parameterexchange- the current exchange
 - 
handleMissingValue
Invoked when a named value is required, butresolveName(String, MethodParameter, ServerWebExchange)returnednulland there is no default value. Subclasses typically throw an exception in this case.- Parameters:
 name- the name for the valueparameter- the method parameter
 - 
handleResolvedValue
protected void handleResolvedValue(@Nullable Object arg, String name, MethodParameter parameter, Model model, ServerWebExchange exchange) Invoked after a value is resolved.- Parameters:
 arg- the resolved argument valuename- the argument nameparameter- the argument parameter typemodel- the modelexchange- the current exchange
 
 -