org.springframework.web.reactive.result.method.annotation

Class 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
    • Constructor Detail

      • AbstractNamedValueArgumentResolver

        public AbstractNamedValueArgumentResolver(@Nullable
                                                  ConfigurableBeanFactory factory,
                                                  ReactiveAdapterRegistry registry)
        Create a new AbstractNamedValueArgumentResolver instance.
        Parameters:
        factory - a bean factory to use for resolving ${...} placeholder and #{...} SpEL expressions in default values, or null if default values are not expected to contain expressions
        registry - for checking reactive type wrappers
    • Method Detail

      • resolveArgument

        public reactor.core.publisher.Mono<java.lang.Object> resolveArgument(MethodParameter parameter,
                                                                             BindingContext bindingContext,
                                                                             ServerWebExchange exchange)
        Description copied from interface: HandlerMethodArgumentResolver
        Resolve the value for the method parameter.
        Parameters:
        parameter - the method parameter
        bindingContext - the binding context to use
        exchange - the current exchange
        Returns:
        Mono for the argument value, possibly empty
      • resolveName

        protected abstract reactor.core.publisher.Mono<java.lang.Object> resolveName(java.lang.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 resolved
        parameter - the method parameter to resolve to an argument value (pre-nested in case of a Optional declaration)
        exchange - the current exchange
        Returns:
        the resolved argument (may be empty Mono)
      • handleMissingValue

        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. Subclasses typically throw an exception in this case.
        Parameters:
        name - the name for the value
        parameter - the method parameter
        exchange - the current exchange
      • handleMissingValue

        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. Subclasses typically throw an exception in this case.
        Parameters:
        name - the name for the value
        parameter - the method parameter
      • handleResolvedValue

        protected void handleResolvedValue(@Nullable
                                           java.lang.Object arg,
                                           java.lang.String name,
                                           MethodParameter parameter,
                                           Model model,
                                           ServerWebExchange exchange)
        Invoked after a value is resolved.
        Parameters:
        arg - the resolved argument value
        name - the argument name
        parameter - the argument parameter type
        model - the model
        exchange - the current exchange