Class ContentNegotiationConfigurer

java.lang.Object
org.springframework.web.servlet.config.annotation.ContentNegotiationConfigurer

public class ContentNegotiationConfigurer extends Object
Creates a ContentNegotiationManager and configures it with one or more ContentNegotiationStrategy instances.

This factory offers properties that in turn result in configuring the underlying strategies. The table below shows the property names, their default settings, as well as the strategies that they help to configure:

Property Setter Default Value Underlying Strategy Enabled Or Not
favorParameter(boolean) false ParameterContentNegotiationStrategy Off
ignoreAcceptHeader(boolean) false HeaderContentNegotiationStrategy Enabled
defaultContentType(MediaType...) null FixedContentNegotiationStrategy Off
defaultContentTypeStrategy(ContentNegotiationStrategy) null ContentNegotiationStrategy Off

As of 5.0 you can set the exact strategies to use via strategies(List).

Since:
3.2
Author:
Rossen Stoyanchev
  • Constructor Details

    • ContentNegotiationConfigurer

      public ContentNegotiationConfigurer()
  • Method Details

    • strategies

      public void strategies(@Nullable List<org.springframework.web.accept.ContentNegotiationStrategy> strategies)
      Set the exact list of strategies to use.

      Note: use of this method is mutually exclusive with use of all other setters in this class which customize a default, fixed set of strategies. See class level doc for more details.

      Parameters:
      strategies - the strategies to use
      Since:
      5.0
    • favorParameter

      public ContentNegotiationConfigurer favorParameter(boolean favorParameter)
      Whether a request parameter ("format" by default) should be used to determine the requested media type. For this option to work you must register media type mappings.

      By default this is set to false.

      See Also:
    • parameterName

      public ContentNegotiationConfigurer parameterName(String parameterName)
      Set the query parameter name to use when favorParameter(boolean) is on.

      The default parameter name is "format".

    • mediaType

      public ContentNegotiationConfigurer mediaType(String extension, org.springframework.http.MediaType mediaType)
      Add a mapping from a key, extracted from a path extension or a query parameter, to a MediaType. This is required in order for the parameter strategy to work. Any extensions explicitly registered here are also treated as safe for the purpose of Reflected File Download attack detection (see Spring Framework reference documentation for more details on RFD attack protection).

      The path extension strategy will also try to use ServletContext.getMimeType(String) and MediaTypeFactory to resolve path extensions. To change this behavior see the useRegisteredExtensionsOnly(boolean) property.

      Parameters:
      extension - the key to look up
      mediaType - the media type
      See Also:
    • mediaTypes

      public ContentNegotiationConfigurer mediaTypes(@Nullable Map<String, org.springframework.http.MediaType> mediaTypes)
      An alternative to mediaType(String, MediaType).
      See Also:
    • replaceMediaTypes

      public ContentNegotiationConfigurer replaceMediaTypes(Map<String, org.springframework.http.MediaType> mediaTypes)
      Similar to mediaType(String, MediaType) but for replacing existing mappings.
      See Also:
    • useRegisteredExtensionsOnly

      public ContentNegotiationConfigurer useRegisteredExtensionsOnly(boolean useRegisteredExtensionsOnly)
      When favorParameter(boolean) is set, this property determines whether to use only registered MediaType mappings to resolve a path extension to a specific MediaType.

      By default, this is not set in which case ParameterContentNegotiationStrategy will use defaults if available.

    • ignoreAcceptHeader

      public ContentNegotiationConfigurer ignoreAcceptHeader(boolean ignoreAcceptHeader)
      Whether to disable checking the 'Accept' request header.

      By default this value is set to false.

    • defaultContentType

      public ContentNegotiationConfigurer defaultContentType(org.springframework.http.MediaType... defaultContentTypes)
      Set the default content type(s) to use when no content type is requested in order of priority.

      If destinations are present that do not support any of the given media types, consider appending MediaType.ALL at the end.

      By default this is not set.

      See Also:
    • defaultContentTypeStrategy

      public ContentNegotiationConfigurer defaultContentTypeStrategy(org.springframework.web.accept.ContentNegotiationStrategy defaultStrategy)
      Set a custom ContentNegotiationStrategy to use to determine the content type to use when no content type is requested.

      By default this is not set.

      Since:
      4.1.2
      See Also:
    • buildContentNegotiationManager

      protected org.springframework.web.accept.ContentNegotiationManager buildContentNegotiationManager()
      Build a ContentNegotiationManager based on this configurer's settings.
      Since:
      4.3.12
      See Also:
      • ContentNegotiationManagerFactoryBean.getObject()