Class ContentNegotiationConfigurer
- java.lang.Object
- org.springframework.web.servlet.config.annotation.ContentNegotiationConfigurer
public class ContentNegotiationConfigurer extends Object
Creates aContentNegotiationManager
and configures it with one or moreContentNegotiationStrategy
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 favorPathExtension(boolean)
true PathExtensionContentNegotiationStrategy
Enabled favorParameter(boolean)
false ParameterContentNegotiationStrategy
Off ignoreAcceptHeader(boolean)
false HeaderContentNegotiationStrategy
Enabled defaultContentType(org.springframework.http.MediaType...)
null FixedContentNegotiationStrategy
Off defaultContentTypeStrategy(org.springframework.web.accept.ContentNegotiationStrategy)
null ContentNegotiationStrategy
Off As of 5.0 you can set the exact strategies to use via
strategies(List)
.Note: if you must use URL-based content type resolution, the use of a query parameter is simpler and preferable to the use of a path extension since the latter can cause issues with URI variables, path parameters, and URI decoding. Consider setting
favorPathExtension(boolean)
to false or otherwise set the strategies to use explicitly viastrategies(List)
.- Since:
- 3.2
- Author:
- Rossen Stoyanchev
Constructor Summary
Constructors Constructor Description ContentNegotiationConfigurer(ServletContext servletContext)
Class constructor withServletContext
.
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description protected ContentNegotiationManager
buildContentNegotiationManager()
Build aContentNegotiationManager
based on this configurer's settings.ContentNegotiationConfigurer
defaultContentType(MediaType... defaultContentTypes)
Set the default content type(s) to use when no content type is requested in order of priority.ContentNegotiationConfigurer
defaultContentTypeStrategy(ContentNegotiationStrategy defaultStrategy)
Set a customContentNegotiationStrategy
to use to determine the content type to use when no content type is requested.ContentNegotiationConfigurer
favorParameter(boolean favorParameter)
Whether a request parameter ("format" by default) should be used to determine the requested media type.ContentNegotiationConfigurer
favorPathExtension(boolean favorPathExtension)
Deprecated.as of 5.2.4.ContentNegotiationConfigurer
ignoreAcceptHeader(boolean ignoreAcceptHeader)
Whether to disable checking the 'Accept' request header.ContentNegotiationConfigurer
ignoreUnknownPathExtensions(boolean ignore)
Deprecated.as of 5.2.4.ContentNegotiationConfigurer
mediaType(String extension, MediaType mediaType)
Add a mapping from a key, extracted from a path extension or a query parameter, to a MediaType.ContentNegotiationConfigurer
mediaTypes(Map<String,MediaType> mediaTypes)
An alternative tomediaType(java.lang.String, org.springframework.http.MediaType)
.ContentNegotiationConfigurer
parameterName(String parameterName)
Set the query parameter name to use whenfavorParameter(boolean)
is on.ContentNegotiationConfigurer
replaceMediaTypes(Map<String,MediaType> mediaTypes)
Similar tomediaType(java.lang.String, org.springframework.http.MediaType)
but for replacing existing mappings.void
strategies(List<ContentNegotiationStrategy> strategies)
Set the exact list of strategies to use.ContentNegotiationConfigurer
useJaf(boolean useJaf)
Deprecated.as of 5.0, in favor ofuseRegisteredExtensionsOnly(boolean)
which has reverse behaviorContentNegotiationConfigurer
useRegisteredExtensionsOnly(boolean useRegisteredExtensionsOnly)
WhenfavorPathExtension
is set, this property determines whether to use only registeredMediaType
mappings to resolve a path extension to a specific MediaType.
Constructor Detail
ContentNegotiationConfigurer
public ContentNegotiationConfigurer(@Nullable ServletContext servletContext)
Class constructor withServletContext
.
Method Detail
strategies
public void strategies(@Nullable List<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
favorPathExtension
@Deprecated public ContentNegotiationConfigurer favorPathExtension(boolean favorPathExtension)
Deprecated.as of 5.2.4. See class-level note inContentNegotiationManagerFactoryBean
on the deprecation of path extension config options. As there is no replacement for this method, for the time being it's necessary to continue using it in order to set it tofalse
. In 5.3 whenfalse
becomes the default, use of this property will no longer be necessary.Whether the path extension in the URL path should be used to determine the requested media type.By default this is set to
true
in which case a request for/hotels.pdf
will be interpreted as a request for"application/pdf"
regardless of the 'Accept' header.
mediaType
public ContentNegotiationConfigurer mediaType(String extension, 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(java.lang.String)
andMediaTypeFactory
to resolve path extensions. To change this behavior see theuseRegisteredExtensionsOnly(boolean)
property.- Parameters:
extension
- the key to look upmediaType
- the media type- See Also:
mediaTypes(Map)
,replaceMediaTypes(Map)
mediaTypes
public ContentNegotiationConfigurer mediaTypes(@Nullable Map<String,MediaType> mediaTypes)
An alternative tomediaType(java.lang.String, org.springframework.http.MediaType)
.
replaceMediaTypes
public ContentNegotiationConfigurer replaceMediaTypes(Map<String,MediaType> mediaTypes)
Similar tomediaType(java.lang.String, org.springframework.http.MediaType)
but for replacing existing mappings.- See Also:
mediaType(String, MediaType)
,mediaTypes(Map)
ignoreUnknownPathExtensions
@Deprecated public ContentNegotiationConfigurer ignoreUnknownPathExtensions(boolean ignore)
Deprecated.as of 5.2.4. See class-level note inContentNegotiationManagerFactoryBean
on the deprecation of path extension config options.Whether to ignore requests with path extension that cannot be resolved to any media type. Setting this tofalse
will result in anHttpMediaTypeNotAcceptableException
if there is no match.By default this is set to
true
.
useJaf
@Deprecated public ContentNegotiationConfigurer useJaf(boolean useJaf)
Deprecated.as of 5.0, in favor ofuseRegisteredExtensionsOnly(boolean)
which has reverse behaviorWhenfavorPathExtension(boolean)
is set, this property determines whether to allow use of JAF (Java Activation Framework) to resolve a path extension to a specific MediaType.
useRegisteredExtensionsOnly
public ContentNegotiationConfigurer useRegisteredExtensionsOnly(boolean useRegisteredExtensionsOnly)
WhenfavorPathExtension
is set, this property determines whether to use only registeredMediaType
mappings to resolve a path extension to a specific MediaType.By default this is not set in which case
PathExtensionContentNegotiationStrategy
will use defaults if available.
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 registermedia type mappings
.By default this is set to
false
.- See Also:
parameterName(String)
parameterName
public ContentNegotiationConfigurer parameterName(String parameterName)
Set the query parameter name to use whenfavorParameter(boolean)
is on.The default parameter name is
"format"
.
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(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.
defaultContentTypeStrategy
public ContentNegotiationConfigurer defaultContentTypeStrategy(ContentNegotiationStrategy defaultStrategy)
Set a customContentNegotiationStrategy
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:
defaultContentType(org.springframework.http.MediaType...)
buildContentNegotiationManager
protected ContentNegotiationManager buildContentNegotiationManager()
Build aContentNegotiationManager
based on this configurer's settings.- Since:
- 4.3.12
- See Also:
ContentNegotiationManagerFactoryBean.getObject()