Class InvocableHandlerMethod


public class InvocableHandlerMethod extends HandlerMethod
Extension of HandlerMethod that invokes the underlying method with argument values resolved from the current HTTP request through a list of HandlerMethodArgumentResolver.

By default, the method invocation happens on the thread from which the Mono was subscribed to, or in some cases the thread that emitted one of the resolved arguments (e.g. when the request body needs to be decoded). To ensure a predictable thread for the underlying method's invocation, a Scheduler can optionally be provided via setInvocationScheduler(Scheduler).

Since:
5.0
Author:
Rossen Stoyanchev, Juergen Hoeller, Sebastien Deleuze
  • Constructor Details

    • InvocableHandlerMethod

      public InvocableHandlerMethod(HandlerMethod handlerMethod)
      Create an instance from a HandlerMethod.
    • InvocableHandlerMethod

      public InvocableHandlerMethod(Object bean, Method method)
      Create an instance from a bean instance and a method.
  • Method Details

    • setArgumentResolvers

      public void setArgumentResolvers(List<? extends HandlerMethodArgumentResolver> resolvers)
      Configure the argument resolvers to use for resolving method argument values against a ServerWebExchange.
    • getResolvers

      public List<HandlerMethodArgumentResolver> getResolvers()
      Return the configured argument resolvers.
    • setParameterNameDiscoverer

      public void setParameterNameDiscoverer(ParameterNameDiscoverer nameDiscoverer)
      Set the ParameterNameDiscoverer for resolving parameter names when needed (e.g. default request attribute name).

      Default is a DefaultParameterNameDiscoverer.

    • getParameterNameDiscoverer

      public ParameterNameDiscoverer getParameterNameDiscoverer()
      Return the configured parameter name discoverer.
    • setReactiveAdapterRegistry

      public void setReactiveAdapterRegistry(ReactiveAdapterRegistry registry)
      Configure a reactive adapter registry. This is needed for cases where the response is fully handled within the controller in combination with an async void return value.

      By default this is a ReactiveAdapterRegistry with default settings.

    • setMethodValidator

      public void setMethodValidator(@Nullable MethodValidator methodValidator)
      Set the MethodValidator to perform method validation with if the controller method HandlerMethod.shouldValidateArguments() or HandlerMethod.shouldValidateReturnValue().
      Since:
      6.1
    • setInvocationScheduler

      public void setInvocationScheduler(@Nullable reactor.core.scheduler.Scheduler invocationScheduler)
      Set the Scheduler on which to perform the method invocation.
      Since:
      6.1.6
    • invoke

      public reactor.core.publisher.Mono<HandlerResult> invoke(ServerWebExchange exchange, BindingContext bindingContext, Object... providedArgs)
      Invoke the method for the given exchange.
      Parameters:
      exchange - the current exchange
      bindingContext - the binding context to use
      providedArgs - optional list of argument values to match by type
      Returns:
      a Mono with a HandlerResult