Class PayloadMethodArgumentResolver
- java.lang.Object
- org.springframework.messaging.handler.annotation.support.PayloadMethodArgumentResolver
- All Implemented Interfaces:
HandlerMethodArgumentResolver
- Direct Known Subclasses:
PayloadArgumentResolver
public class PayloadMethodArgumentResolver extends Object implements HandlerMethodArgumentResolver
A resolver to extract and convert the payload of a message using aMessageConverter. It also validates the payload using aValidatorif the argument is annotated with a Validation annotation.This
HandlerMethodArgumentResolvershould be ordered last as it supports all types and does not require thePayloadannotation.- Since:
- 5.2
- Author:
- Rossen Stoyanchev, Juergen Hoeller, Brian Clozel, Stephane Nicoll
Constructor Summary
Constructors Constructor Description PayloadMethodArgumentResolver(MessageConverter messageConverter)Create a newPayloadArgumentResolverwith the givenMessageConverter.PayloadMethodArgumentResolver(MessageConverter messageConverter, Validator validator)PayloadMethodArgumentResolver(MessageConverter messageConverter, Validator validator, boolean useDefaultResolution)
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected booleanisEmptyPayload(Object payload)Specify if the givenpayloadis empty.ObjectresolveArgument(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 Detail
PayloadMethodArgumentResolver
public PayloadMethodArgumentResolver(MessageConverter messageConverter)
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 Detail
supportsParameter
public boolean supportsParameter(MethodParameter parameter)
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
protected boolean isEmptyPayload(@Nullable Object payload)
Specify if the givenpayloadis empty.- Parameters:
payload- the payload to check (can benull)
resolveTargetClass
protected Class<?> resolveTargetClass(MethodParameter parameter, Message<?> message)
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
protected void validate(Message<?> message, MethodParameter parameter, Object target)
Validate the payload if applicable.The default implementation checks for
@javax.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