org.springframework.web.servlet.mvc.method.annotation

## Class AbstractMappingJacksonResponseBodyAdvice

- java.lang.Object
- - org.springframework.web.servlet.mvc.method.annotation.AbstractMappingJacksonResponseBodyAdvice

- All Implemented Interfaces:
    ResponseBodyAdvice<Object>
  Direct Known Subclasses:
    JsonViewResponseBodyAdvice

      public abstract class AbstractMappingJacksonResponseBodyAdvice
      extends Object
      implements ResponseBodyAdvice<Object>

  A convenient base class for `ResponseBodyAdvice` implementations that customize the response before JSON serialization with `AbstractJackson2HttpMessageConverter`'s concrete subclasses.
  Since:
    4.1
  Author:
    Rossen Stoyanchev, Sebastien Deleuze

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `AbstractMappingJacksonResponseBodyAdvice()`

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `Object` | `beforeBodyWrite(Object body, MethodParameter returnType, MediaType contentType, Class<? extends HttpMessageConverter<?>> converterType, ServerHttpRequest request, ServerHttpResponse response)` Invoked after an `HttpMessageConverter` is selected and just before its write method is invoked.
    `protected abstract void` | `beforeBodyWriteInternal(MappingJacksonValue bodyContainer, MediaType contentType, MethodParameter returnType, ServerHttpRequest request, ServerHttpResponse response)` Invoked only if the converter type is `MappingJackson2HttpMessageConverter`.
    `protected MappingJacksonValue` | `getOrCreateContainer(Object body)` Wrap the body in a `MappingJacksonValue` value container (for providing additional serialization instructions) or simply cast it if already wrapped.
    `boolean` | `supports(MethodParameter returnType, Class<? extends HttpMessageConverter<?>> converterType)` Whether this component supports the given controller method return type and the selected `HttpMessageConverter` type.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### AbstractMappingJacksonResponseBodyAdvice

          public AbstractMappingJacksonResponseBodyAdvice()

  - ### Method Detail

    - #### supports

          public boolean supports(MethodParameter returnType,
                                  Class<? extends HttpMessageConverter<?>> converterType)

      Description copied from interface: `ResponseBodyAdvice`
      Whether this component supports the given controller method return type and the selected `HttpMessageConverter` type.
      Specified by:
        `supports` in interface `ResponseBodyAdvice<Object>`
      Parameters:
        `returnType` - the return type
        `converterType` - the selected converter type
      Returns:
        `true` if `ResponseBodyAdvice.beforeBodyWrite(T, org.springframework.core.MethodParameter, org.springframework.http.MediaType, java.lang.Class<? extends org.springframework.http.converter.HttpMessageConverter<?>>, org.springframework.http.server.ServerHttpRequest, org.springframework.http.server.ServerHttpResponse)` should be invoked; `false` otherwise

    - #### beforeBodyWrite

          @Nullable
          public final Object beforeBodyWrite(@Nullable
                                                        Object body,
                                                        MethodParameter returnType,
                                                        MediaType contentType,
                                                        Class<? extends HttpMessageConverter<?>> converterType,
                                                        ServerHttpRequest request,
                                                        ServerHttpResponse response)

      Description copied from interface: `ResponseBodyAdvice`
      Invoked after an `HttpMessageConverter` is selected and just before its write method is invoked.
      Specified by:
        `beforeBodyWrite` in interface `ResponseBodyAdvice<Object>`
      Parameters:
        `body` - the body to be written
        `returnType` - the return type of the controller method
        `contentType` - the content type selected through content negotiation
        `converterType` - the converter type selected to write to the response
        `request` - the current request
        `response` - the current response
      Returns:
        the body that was passed in or a modified (possibly new) instance

    - #### getOrCreateContainer

          protected MappingJacksonValue getOrCreateContainer(Object body)

      Wrap the body in a `MappingJacksonValue` value container (for providing additional serialization instructions) or simply cast it if already wrapped.

    - #### beforeBodyWriteInternal

          protected abstract void beforeBodyWriteInternal(MappingJacksonValue bodyContainer,
                                                          MediaType contentType,
                                                          MethodParameter returnType,
                                                          ServerHttpRequest request,
                                                          ServerHttpResponse response)

      Invoked only if the converter type is `MappingJackson2HttpMessageConverter`.