Class PayloadMethodArgumentResolver
java.lang.Object
org.springframework.messaging.handler.annotation.reactive.PayloadMethodArgumentResolver
- All Implemented Interfaces:
HandlerMethodArgumentResolver
A resolver to extract and decode the payload of a message using a
Decoder
, where the payload is expected to be a Publisher
of DataBuffer
.
Validation is applied if the method argument is annotated with
Validated
or
@jakarta.validation.Valid
. Validation failure results in an
MethodArgumentNotValidException
.
This resolver should be ordered last if useDefaultResolution
is
set to true
since in that case it supports all types and does not
require the presence of Payload
.
- Since:
- 5.2
- Author:
- Rossen Stoyanchev
-
Field Summary
-
Constructor Summary
ConstructorDescriptionPayloadMethodArgumentResolver
(List<? extends Decoder<?>> decoders, Validator validator, ReactiveAdapterRegistry registry, boolean useDefaultResolution) -
Method Summary
Modifier and TypeMethodDescriptionReturn the configuredReactiveAdapterRegistry
.Return a read-only list of the configured decoders.protected MimeType
getMimeType
(Message<?> message) Return the mime type for the content.Return the configured validator, if any.boolean
Whether this resolver is configured to use default resolution, i.e.final reactor.core.publisher.Mono<Object>
resolveArgument
(MethodParameter parameter, Message<?> message) Decode the content of the given message payload through a compatibleDecoder
.boolean
supportsParameter
(MethodParameter parameter) Whether the given method parameter is supported by this resolver.
-
Field Details
-
logger
-
-
Constructor Details
-
PayloadMethodArgumentResolver
-
-
Method Details
-
getDecoders
Return a read-only list of the configured decoders. -
getValidator
Return the configured validator, if any. -
getAdapterRegistry
Return the configuredReactiveAdapterRegistry
. -
isUseDefaultResolution
public boolean isUseDefaultResolution()Whether this resolver is configured to use default resolution, i.e. works for any argument type regardless of whether@Payload
is present or not. -
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
public final reactor.core.publisher.Mono<Object> resolveArgument(MethodParameter parameter, Message<?> message) Decode the content of the given message payload through a compatibleDecoder
.Validation is applied if the method argument is annotated with
@jakarta.validation.Valid
orValidated
. Validation failure results in anMethodArgumentNotValidException
.- Specified by:
resolveArgument
in interfaceHandlerMethodArgumentResolver
- Parameters:
parameter
- the target method argument that we are decoding tomessage
- the message from which the content was extracted- Returns:
- a Mono with the result of argument resolution
- See Also:
-
extractContent(MethodParameter, Message)
getMimeType(Message)
-
getMimeType
Return the mime type for the content. By default this method checks theMessageHeaders.CONTENT_TYPE
header expecting to find aMimeType
value or a String to parse to aMimeType
.- Parameters:
message
- the input message
-