Class PayloadMethodArgumentResolver

java.lang.Object
org.springframework.messaging.handler.annotation.reactive.PayloadMethodArgumentResolver
All Implemented Interfaces:
HandlerMethodArgumentResolver

public class PayloadMethodArgumentResolver extends Object implements 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 Details

    • logger

      protected final Log logger
  • Constructor Details

  • Method Details

    • getDecoders

      public List<Decoder<?>> getDecoders()
      Return a read-only list of the configured decoders.
    • getValidator

      @Nullable public Validator getValidator()
      Return the configured validator, if any.
    • getAdapterRegistry

      public ReactiveAdapterRegistry getAdapterRegistry()
      Return the configured ReactiveAdapterRegistry.
    • 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

      public boolean supportsParameter(MethodParameter parameter)
      Description copied from interface: HandlerMethodArgumentResolver
      Whether the given method parameter is supported by this resolver.
      Specified by:
      supportsParameter in interface HandlerMethodArgumentResolver
      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 compatible Decoder.

      Validation is applied if the method argument is annotated with @jakarta.validation.Valid or Validated. Validation failure results in an MethodArgumentNotValidException.

      Specified by:
      resolveArgument in interface HandlerMethodArgumentResolver
      Parameters:
      parameter - the target method argument that we are decoding to
      message - the message from which the content was extracted
      Returns:
      a Mono with the result of argument resolution
      See Also:
    • getMimeType

      @Nullable protected MimeType getMimeType(Message<?> message)
      Return the mime type for the content. By default this method checks the MessageHeaders.CONTENT_TYPE header expecting to find a MimeType value or a String to parse to a MimeType.
      Parameters:
      message - the input message