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. It also validates the payload using a
Validator if the argument is annotated with a Validation annotation.
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
ConstructorsConstructorDescriptionPayloadMethodArgumentResolver(MessageConverter messageConverter) Create a newPayloadArgumentResolverwith the givenMessageConverter.PayloadMethodArgumentResolver(MessageConverter messageConverter, Validator validator) PayloadMethodArgumentResolver(MessageConverter messageConverter, Validator validator, boolean useDefaultResolution) -
Method Summary
Modifier and TypeMethodDescriptionprotected booleanisEmptyPayload(Object payload) Specify if the givenpayloadis 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.booleansupportsParameter(MethodParameter parameter) Whether the given method parameter is supported by this resolver.protected voidvalidate(Message<?> message, MethodParameter parameter, Object target) Validate the payload if applicable.
-
Constructor Details
-
PayloadMethodArgumentResolver
Create a newPayloadArgumentResolverwith 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@Payloadannotation are supported.
-
-
Method Details
-
supportsParameter
Description copied from interface:HandlerMethodArgumentResolverWhether the given method parameter is supported by this resolver.- Specified by:
supportsParameterin interfaceHandlerMethodArgumentResolver- Parameters:
parameter- the method parameter to check- Returns:
trueif this resolver supports the supplied parameter;falseotherwise
-
resolveArgument
@Nullable public Object resolveArgument(MethodParameter parameter, Message<?> message) throws Exception Description copied from interface:HandlerMethodArgumentResolverResolves a method parameter into an argument value from a given message.- Specified by:
resolveArgumentin 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 givenpayloadis 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. returnStringif target type isObjectand"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.The default implementation checks for
@jakarta.validation.Valid, Spring'sValidated, and custom annotations whose name starts with "Valid".- Parameters:
message- the currently processed messageparameter- the method parametertarget- the target payload object- Throws:
MethodArgumentNotValidException- in case of binding errors
-