Class InvocableHandlerMethod
java.lang.Object
org.springframework.core.annotation.AnnotatedMethod
org.springframework.web.method.HandlerMethod
org.springframework.web.reactive.result.method.InvocableHandlerMethod
public class InvocableHandlerMethod
extends org.springframework.web.method.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 (for example, 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
-
Nested Class Summary
Nested classes/interfaces inherited from class org.springframework.core.annotation.AnnotatedMethod
org.springframework.core.annotation.AnnotatedMethod.AnnotatedMethodParameter -
Field Summary
Fields inherited from class org.springframework.web.method.HandlerMethod
logger -
Constructor Summary
ConstructorsConstructorDescriptionInvocableHandlerMethod(Object bean, Method method) Create an instance from a bean instance and a method.InvocableHandlerMethod(org.springframework.web.method.HandlerMethod handlerMethod) Create an instance from aHandlerMethod. -
Method Summary
Modifier and TypeMethodDescriptionorg.springframework.core.ParameterNameDiscovererReturn the configured parameter name discoverer.Return the configured argument resolvers.reactor.core.publisher.Mono<HandlerResult>invoke(org.springframework.web.server.ServerWebExchange exchange, BindingContext bindingContext, Object... providedArgs) Invoke the method for the given exchange.voidsetArgumentResolvers(List<? extends HandlerMethodArgumentResolver> resolvers) Configure the argument resolvers to use for resolving method argument values against aServerWebExchange.voidsetInvocationScheduler(reactor.core.scheduler.Scheduler invocationScheduler) Set theScheduleron which to perform the method invocation.voidsetMethodValidator(org.springframework.validation.method.MethodValidator methodValidator) Set theMethodValidatorto perform method validation with if the controller methodHandlerMethod.shouldValidateArguments()orHandlerMethod.shouldValidateReturnValue().voidsetParameterNameDiscoverer(org.springframework.core.ParameterNameDiscoverer nameDiscoverer) Set the ParameterNameDiscoverer for resolving parameter names when needed (for example, default request attribute name).voidsetReactiveAdapterRegistry(org.springframework.core.ReactiveAdapterRegistry registry) Configure a reactive adapter registry.Methods inherited from class org.springframework.web.method.HandlerMethod
assertTargetBean, createWithResolvedBean, createWithValidateFlags, equals, formatInvokeError, getBean, getBeanType, getContainingClass, getResolvedFromHandlerMethod, getResponseStatus, getResponseStatusReason, getShortLogMessage, hashCode, shouldValidateArguments, shouldValidateReturnValue, toStringMethods inherited from class org.springframework.core.annotation.AnnotatedMethod
findProvidedArgument, formatArgumentError, getBridgedMethod, getMethod, getMethodAnnotation, getMethodParameters, getReturnType, getReturnValueType, hasMethodAnnotation, isVoid
-
Constructor Details
-
InvocableHandlerMethod
public InvocableHandlerMethod(org.springframework.web.method.HandlerMethod handlerMethod) Create an instance from aHandlerMethod. -
InvocableHandlerMethod
Create an instance from a bean instance and a method.
-
-
Method Details
-
setArgumentResolvers
Configure the argument resolvers to use for resolving method argument values against aServerWebExchange. -
getResolvers
Return the configured argument resolvers. -
setParameterNameDiscoverer
public void setParameterNameDiscoverer(org.springframework.core.ParameterNameDiscoverer nameDiscoverer) Set the ParameterNameDiscoverer for resolving parameter names when needed (for example, default request attribute name).Default is a
DefaultParameterNameDiscoverer. -
getParameterNameDiscoverer
public org.springframework.core.ParameterNameDiscoverer getParameterNameDiscoverer()Return the configured parameter name discoverer. -
setReactiveAdapterRegistry
public void setReactiveAdapterRegistry(org.springframework.core.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
ReactiveAdapterRegistrywith default settings. -
setMethodValidator
public void setMethodValidator(@Nullable org.springframework.validation.method.MethodValidator methodValidator) Set theMethodValidatorto perform method validation with if the controller methodHandlerMethod.shouldValidateArguments()orHandlerMethod.shouldValidateReturnValue().- Since:
- 6.1
-
setInvocationScheduler
public void setInvocationScheduler(@Nullable reactor.core.scheduler.Scheduler invocationScheduler) Set theScheduleron which to perform the method invocation.- Since:
- 6.1.6
-
invoke
public reactor.core.publisher.Mono<HandlerResult> invoke(org.springframework.web.server.ServerWebExchange exchange, BindingContext bindingContext, Object... providedArgs) Invoke the method for the given exchange.- Parameters:
exchange- the current exchangebindingContext- the binding context to useprovidedArgs- optional list of argument values to match by type- Returns:
- a Mono with a
HandlerResult
-