org.springframework.http.codec

## Interface CodecConfigurer

- All Known Subinterfaces:
    ClientCodecConfigurer, ServerCodecConfigurer
  All Known Implementing Classes:
    DefaultClientCodecConfigurer, DefaultServerCodecConfigurer

      public interface CodecConfigurer

  Defines a common interface for configuring either client or server HTTP message readers and writers. This is used as follows:
  - Use `ClientCodecConfigurer.create()` or `ServerCodecConfigurer.create()` to create an instance.
  - Use `defaultCodecs()` to customize HTTP message readers or writers registered by default.
  - Use `customCodecs()` to add custom HTTP message readers or writers.
  - Use `getReaders()` and `getWriters()` to obtain the list of configured HTTP message readers and writers.

  HTTP message readers and writers are divided into 3 categories that are ordered as follows:

  1. Typed readers and writers that support specific types, e.g. byte[], String.
  2. Object readers and writers, e.g. JSON, XML.
  3. Catch-all readers or writers, e.g. String with any media type.

  Typed and object readers are further subdivided and ordered as follows:

  1. Default HTTP reader and writer registrations.
  2. Custom readers and writers.
  Since:
    5.0
  Author:
    Rossen Stoyanchev

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Interface and Description
    --- | ---
    `static interface` | `CodecConfigurer.CustomCodecs` Registry for custom HTTP message readers and writers.
    `static interface` | `CodecConfigurer.DefaultCodecConfig` Exposes the values of properties configured through `defaultCodecs()` that are applied to default codecs.
    `static interface` | `CodecConfigurer.DefaultCodecs` Customize or replace the HTTP message readers and writers registered by default.

  - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `CodecConfigurer` | `clone()` Create a copy of this `CodecConfigurer`.
    `CodecConfigurer.CustomCodecs` | `customCodecs()` Register custom HTTP message readers or writers in addition to the ones registered by default.
    `CodecConfigurer.DefaultCodecs` | `defaultCodecs()` Provides a way to customize or replace HTTP message readers and writers registered by default.
    `List<HttpMessageReader<?>>` | `getReaders()` Obtain the configured HTTP message readers.
    `List<HttpMessageWriter<?>>` | `getWriters()` Obtain the configured HTTP message writers.
    `void` | `registerDefaults(boolean registerDefaults)` Provides a way to completely turn off registration of default HTTP message readers and writers, and instead rely only on the ones provided via `customCodecs()`.

- - ### Method Detail

    - #### defaultCodecs

          CodecConfigurer.DefaultCodecs defaultCodecs()

      Provides a way to customize or replace HTTP message readers and writers registered by default.
      See Also:
        `registerDefaults(boolean)`

    - #### customCodecs

          CodecConfigurer.CustomCodecs customCodecs()

      Register custom HTTP message readers or writers in addition to the ones registered by default.

    - #### registerDefaults

          void registerDefaults(boolean registerDefaults)

      Provides a way to completely turn off registration of default HTTP message readers and writers, and instead rely only on the ones provided via `customCodecs()`.

      By default this is set to `"true"` in which case default registrations are made; setting this to `false` disables default registrations.

    - #### getReaders

          List<HttpMessageReader<?>> getReaders()

      Obtain the configured HTTP message readers.

    - #### getWriters

          List<HttpMessageWriter<?>> getWriters()

      Obtain the configured HTTP message writers.

    - #### clone

          CodecConfigurer clone()

      Create a copy of this `CodecConfigurer`. The returned clone has its own lists of default and custom codecs and generally can be configured independently. Keep in mind however that codec instances (if any are configured) are themselves not cloned.
      Since:
        5.1.12