Class RequestResponseBodyMethodProcessor

All Implemented Interfaces:
org.springframework.web.method.support.HandlerMethodArgumentResolver, org.springframework.web.method.support.HandlerMethodReturnValueHandler

public class RequestResponseBodyMethodProcessor extends AbstractMessageConverterMethodProcessor
Resolves method arguments annotated with @RequestBody and handles return values from methods annotated with @ResponseBody by reading and writing to the body of the request or response with an HttpMessageConverter.

An @RequestBody method argument is also validated if it is annotated with any annotations that trigger validation. In case of validation failure, MethodArgumentNotValidException is raised and results in an HTTP 400 response status code if DefaultHandlerExceptionResolver is configured.

Since:
3.1
Author:
Arjen Poutsma, Rossen Stoyanchev, Juergen Hoeller
  • Constructor Details

    • RequestResponseBodyMethodProcessor

      public RequestResponseBodyMethodProcessor(List<org.springframework.http.converter.HttpMessageConverter<?>> converters)
      Basic constructor with converters only. Suitable for resolving @RequestBody. For handling @ResponseBody consider also providing a ContentNegotiationManager.
    • RequestResponseBodyMethodProcessor

      public RequestResponseBodyMethodProcessor(List<org.springframework.http.converter.HttpMessageConverter<?>> converters, @Nullable org.springframework.web.accept.ContentNegotiationManager manager)
      Basic constructor with converters and ContentNegotiationManager. Suitable for resolving @RequestBody and handling @ResponseBody without Request~ or ResponseBodyAdvice.
    • RequestResponseBodyMethodProcessor

      public RequestResponseBodyMethodProcessor(List<org.springframework.http.converter.HttpMessageConverter<?>> converters, @Nullable List<Object> requestResponseBodyAdvice)
      Complete constructor for resolving @RequestBody method arguments. For handling @ResponseBody consider also providing a ContentNegotiationManager.
      Since:
      4.2
    • RequestResponseBodyMethodProcessor

      public RequestResponseBodyMethodProcessor(List<org.springframework.http.converter.HttpMessageConverter<?>> converters, @Nullable org.springframework.web.accept.ContentNegotiationManager manager, @Nullable List<Object> requestResponseBodyAdvice)
      Complete constructor for resolving @RequestBody and handling @ResponseBody.
  • Method Details

    • supportsParameter

      public boolean supportsParameter(org.springframework.core.MethodParameter parameter)
    • supportsReturnType

      public boolean supportsReturnType(org.springframework.core.MethodParameter returnType)
    • resolveArgument

      public Object resolveArgument(org.springframework.core.MethodParameter parameter, @Nullable org.springframework.web.method.support.ModelAndViewContainer mavContainer, org.springframework.web.context.request.NativeWebRequest webRequest, @Nullable org.springframework.web.bind.support.WebDataBinderFactory binderFactory) throws Exception
      Throws MethodArgumentNotValidException if validation fails.
      Throws:
      org.springframework.http.converter.HttpMessageNotReadableException - if RequestBody.required() is true and there is no body content or if there is no suitable converter to read the content with.
      Exception
    • readWithMessageConverters

      protected <T> Object readWithMessageConverters(org.springframework.web.context.request.NativeWebRequest webRequest, org.springframework.core.MethodParameter parameter, Type paramType) throws IOException, org.springframework.web.HttpMediaTypeNotSupportedException, org.springframework.http.converter.HttpMessageNotReadableException
      Description copied from class: AbstractMessageConverterMethodArgumentResolver
      Create the method argument value of the expected parameter type by reading from the given request.
      Overrides:
      readWithMessageConverters in class AbstractMessageConverterMethodArgumentResolver
      Type Parameters:
      T - the expected type of the argument value to be created
      Parameters:
      webRequest - the current request
      parameter - the method parameter descriptor (may be null)
      paramType - the type of the argument value to be created
      Returns:
      the created method argument value
      Throws:
      IOException - if the reading from the request fails
      org.springframework.web.HttpMediaTypeNotSupportedException - if no suitable message converter is found
      org.springframework.http.converter.HttpMessageNotReadableException
    • checkRequired

      protected boolean checkRequired(org.springframework.core.MethodParameter parameter)
    • handleReturnValue

      public void handleReturnValue(@Nullable Object returnValue, org.springframework.core.MethodParameter returnType, org.springframework.web.method.support.ModelAndViewContainer mavContainer, org.springframework.web.context.request.NativeWebRequest webRequest) throws IOException, org.springframework.web.HttpMediaTypeNotAcceptableException, org.springframework.http.converter.HttpMessageNotWritableException
      Throws:
      IOException
      org.springframework.web.HttpMediaTypeNotAcceptableException
      org.springframework.http.converter.HttpMessageNotWritableException