Class PayloadMethodArgumentResolver
java.lang.Object
org.springframework.messaging.handler.annotation.support.PayloadMethodArgumentResolver
- All Implemented Interfaces:
HandlerMethodArgumentResolver
A resolver to extract and convert the payload of a message using a
MessageConverter
.
Validation is applied if the method argument is annotated with
Validated
or
@jakarta.validation.Valid
. Validation failure results in an
MethodArgumentNotValidException
.
This HandlerMethodArgumentResolver
should be ordered last as it
supports all types and does not require the Payload
annotation.
- Since:
- 5.2
- Author:
- Rossen Stoyanchev, Juergen Hoeller, Brian Clozel, Stephane Nicoll
-
Constructor Summary
ConstructorDescriptionPayloadMethodArgumentResolver
(MessageConverter messageConverter) Create a newPayloadArgumentResolver
with the givenMessageConverter
.PayloadMethodArgumentResolver
(MessageConverter messageConverter, Validator validator) PayloadMethodArgumentResolver
(MessageConverter messageConverter, Validator validator, boolean useDefaultResolution) -
Method Summary
Modifier and TypeMethodDescriptionprotected boolean
isEmptyPayload
(Object payload) Specify if the givenpayload
is empty.resolveArgument
(MethodParameter parameter, Message<?> message) Resolves a method parameter into an argument value from a given message.protected Class<?>
resolveTargetClass
(MethodParameter parameter, Message<?> message) Resolve the target class to convert the payload to.boolean
supportsParameter
(MethodParameter parameter) Whether the given method parameter is supported by this resolver.protected void
validate
(Message<?> message, MethodParameter parameter, Object target) Validate the payload if applicable.
-
Constructor Details
-
PayloadMethodArgumentResolver
Create a newPayloadArgumentResolver
with the givenMessageConverter
.- Parameters:
messageConverter
- the MessageConverter to use (required)
-
PayloadMethodArgumentResolver
public PayloadMethodArgumentResolver(MessageConverter messageConverter, @Nullable Validator validator) - Parameters:
messageConverter
- the MessageConverter to use (required)validator
- the Validator to use (optional)
-
PayloadMethodArgumentResolver
public PayloadMethodArgumentResolver(MessageConverter messageConverter, @Nullable Validator validator, boolean useDefaultResolution) - Parameters:
messageConverter
- the MessageConverter to use (required)validator
- the Validator to use (optional)useDefaultResolution
- if "true" (the default) this resolver supports all parameters; if "false" then only arguments with the@Payload
annotation are supported.
-
-
Method Details
-
supportsParameter
Description copied from interface:HandlerMethodArgumentResolver
Whether the given method parameter is supported by this resolver.- Specified by:
supportsParameter
in interfaceHandlerMethodArgumentResolver
- Parameters:
parameter
- the method parameter to check- Returns:
true
if this resolver supports the supplied parameter;false
otherwise
-
resolveArgument
@Nullable public Object resolveArgument(MethodParameter parameter, Message<?> message) throws Exception Description copied from interface:HandlerMethodArgumentResolver
Resolves a method parameter into an argument value from a given message.- Specified by:
resolveArgument
in interfaceHandlerMethodArgumentResolver
- Parameters:
parameter
- the method parameter to resolve. This parameter must have previously been passed toHandlerMethodArgumentResolver.supportsParameter(org.springframework.core.MethodParameter)
which must have returnedtrue
.message
- the currently processed message- Returns:
- the resolved argument value, or
null
- Throws:
Exception
- in case of errors with the preparation of argument values
-
isEmptyPayload
Specify if the givenpayload
is empty.- Parameters:
payload
- the payload to check (can benull
)
-
resolveTargetClass
Resolve the target class to convert the payload to.By default this is simply
MethodParameter.getParameterType()
but that can be overridden to select a more specific target type after also taking into account the "Content-Type", e.g. returnString
if target type isObject
and"Content-Type:text/**"
.- Parameters:
parameter
- the target method parametermessage
- the message being processed- Returns:
- the target type to use
- Since:
- 5.2
-
validate
Validate the payload if applicable.- Parameters:
message
- the currently processed messageparameter
- the method parametertarget
- the target payload object- Throws:
MethodArgumentNotValidException
- in case of binding errors
-