public abstract class AbstractNamedValueArgumentResolver extends java.lang.Object implements HandlerMethodArgumentResolver
Subclasses define how to do the following:
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.
Modifier and Type | Class and Description |
---|---|
protected static class |
AbstractNamedValueArgumentResolver.NamedValueInfo
Represents the information about a named value, including name, whether
it's required and a default value.
|
Modifier and Type | Field and Description |
---|---|
private ConfigurableBeanFactory |
configurableBeanFactory |
private BeanExpressionContext |
expressionContext |
private java.util.Map<MethodParameter,AbstractNamedValueArgumentResolver.NamedValueInfo> |
namedValueInfoCache |
Constructor and Description |
---|
AbstractNamedValueArgumentResolver(ConfigurableBeanFactory beanFactory) |
Modifier and Type | Method and Description |
---|---|
private java.lang.Object |
applyConversion(java.lang.Object value,
AbstractNamedValueArgumentResolver.NamedValueInfo namedValueInfo,
MethodParameter parameter,
BindingContext bindingContext,
ServerWebExchange exchange) |
protected abstract AbstractNamedValueArgumentResolver.NamedValueInfo |
createNamedValueInfo(MethodParameter parameter)
Create the
AbstractNamedValueArgumentResolver.NamedValueInfo object for the given method parameter. |
private <any> |
getDefaultValue(AbstractNamedValueArgumentResolver.NamedValueInfo namedValueInfo,
MethodParameter parameter,
BindingContext bindingContext,
Model model,
ServerWebExchange exchange) |
private AbstractNamedValueArgumentResolver.NamedValueInfo |
getNamedValueInfo(MethodParameter parameter)
Obtain the named value for the given method parameter.
|
protected void |
handleMissingValue(java.lang.String name,
MethodParameter parameter)
Invoked when a named value is required, but
resolveName(String, MethodParameter, ServerWebExchange) returned
null and there is no default value. |
protected void |
handleMissingValue(java.lang.String name,
MethodParameter parameter,
ServerWebExchange exchange)
Invoked when a named value is required, but
resolveName(String, MethodParameter, ServerWebExchange) returned
null and there is no default value. |
private java.lang.Object |
handleNullValue(java.lang.String name,
java.lang.Object value,
java.lang.Class<?> paramType)
A
null results in a false value for boolean s or
an exception for other primitives. |
protected void |
handleResolvedValue(java.lang.Object arg,
java.lang.String name,
MethodParameter parameter,
Model model,
ServerWebExchange exchange)
Invoked after a value is resolved.
|
<any> |
resolveArgument(MethodParameter parameter,
BindingContext bindingContext,
ServerWebExchange exchange)
The returned
Mono may produce one or zero values if the argument
does not resolve to any value, which will result in null passed
as the argument value. |
protected abstract <any> |
resolveName(java.lang.String name,
MethodParameter parameter,
ServerWebExchange exchange)
Resolve the given parameter type and value name into an argument value.
|
private java.lang.Object |
resolveStringValue(java.lang.String value)
Resolve the given annotation-specified value,
potentially containing placeholders and expressions.
|
private AbstractNamedValueArgumentResolver.NamedValueInfo |
updateNamedValueInfo(MethodParameter parameter,
AbstractNamedValueArgumentResolver.NamedValueInfo info)
Create a new NamedValueInfo based on the given NamedValueInfo with
sanitized values.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
supportsParameter
private final ConfigurableBeanFactory configurableBeanFactory
private final BeanExpressionContext expressionContext
private final java.util.Map<MethodParameter,AbstractNamedValueArgumentResolver.NamedValueInfo> namedValueInfoCache
public AbstractNamedValueArgumentResolver(ConfigurableBeanFactory beanFactory)
beanFactory
- a bean factory to use for resolving ${...} placeholder
and #{...} SpEL expressions in default values, or null
if default
values are not expected to contain expressionspublic <any> resolveArgument(MethodParameter parameter, BindingContext bindingContext, ServerWebExchange exchange)
HandlerMethodArgumentResolver
Mono
may produce one or zero values if the argument
does not resolve to any value, which will result in null
passed
as the argument value.resolveArgument
in interface HandlerMethodArgumentResolver
parameter
- the method parameterbindingContext
- the binding context to useexchange
- the current exchangeprivate AbstractNamedValueArgumentResolver.NamedValueInfo getNamedValueInfo(MethodParameter parameter)
protected abstract AbstractNamedValueArgumentResolver.NamedValueInfo createNamedValueInfo(MethodParameter parameter)
AbstractNamedValueArgumentResolver.NamedValueInfo
object for the given method parameter.
Implementations typically retrieve the method annotation by means of
MethodParameter.getParameterAnnotation(Class)
.parameter
- the method parameterprivate AbstractNamedValueArgumentResolver.NamedValueInfo updateNamedValueInfo(MethodParameter parameter, AbstractNamedValueArgumentResolver.NamedValueInfo info)
private java.lang.Object resolveStringValue(java.lang.String value)
protected abstract <any> resolveName(java.lang.String name, MethodParameter parameter, ServerWebExchange exchange)
name
- the name of the value being resolvedparameter
- the method parameter to resolve to an argument value
(pre-nested in case of a Optional
declaration)exchange
- the current exchangenull
)private java.lang.Object applyConversion(java.lang.Object value, AbstractNamedValueArgumentResolver.NamedValueInfo namedValueInfo, MethodParameter parameter, BindingContext bindingContext, ServerWebExchange exchange)
private <any> getDefaultValue(AbstractNamedValueArgumentResolver.NamedValueInfo namedValueInfo, MethodParameter parameter, BindingContext bindingContext, Model model, ServerWebExchange exchange)
protected void handleMissingValue(java.lang.String name, MethodParameter parameter, ServerWebExchange exchange)
resolveName(String, MethodParameter, ServerWebExchange)
returned
null
and there is no default value. Subclasses typically throw an
exception in this case.name
- the name for the valueparameter
- the method parameterexchange
- the current exchangeprotected void handleMissingValue(java.lang.String name, MethodParameter parameter)
resolveName(String, MethodParameter, ServerWebExchange)
returned
null
and there is no default value. Subclasses typically throw an
exception in this case.name
- the name for the valueparameter
- the method parameterprivate java.lang.Object handleNullValue(java.lang.String name, java.lang.Object value, java.lang.Class<?> paramType)
null
results in a false
value for boolean
s or
an exception for other primitives.protected void handleResolvedValue(java.lang.Object arg, java.lang.String name, MethodParameter parameter, Model model, ServerWebExchange exchange)
arg
- the resolved argument valuename
- the argument nameparameter
- the argument parameter typemodel
- the modelexchange
- the current exchange