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.As an alternative you can also rely on the set of defaults described below which can be turned on or off or customized through the methods of this builder:
The order in which strategies are configured is fixed. You can only turn them on or off.
For the path extension and parameter strategies you may explicitly add
MediaType mappings
. Those will be used to resolve path extensions and/or a query parameter value such as "json" to a concrete media type such as "application/json".The path extension strategy will also use
ServletContext.getMimeType(java.lang.String)
and the Java Activation framework (JAF), if available, to resolve a path extension to a MediaType. You may howeversuppress
the use of JAF.- Since:
- 3.2
- Author:
- Rossen Stoyanchev, Brian Clozel, Juergen Hoeller
- See Also:
ContentNegotiationManagerFactoryBean
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 defaultContentType)
Set the default content type to use when no content type is requested.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)
Whether the path extension in the URL path should be used to determine the requested media type.protected ContentNegotiationManager
getContentNegotiationManager()
Deprecated.as of 4.3.12, in favor ofbuildContentNegotiationManager()
ContentNegotiationConfigurer
ignoreAcceptHeader(boolean ignoreAcceptHeader)
Whether to disable checking the 'Accept' request header.ContentNegotiationConfigurer
ignoreUnknownPathExtensions(boolean ignore)
Whether to ignore requests with path extension that cannot be resolved to any media type.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.ContentNegotiationConfigurer
useJaf(boolean useJaf)
WhenfavorPathExtension(boolean)
is set, this property determines whether to allow use of JAF (Java Activation Framework) to resolve a path extension to a specific MediaType.
Constructor Detail
ContentNegotiationConfigurer
public ContentNegotiationConfigurer(ServletContext servletContext)
Class constructor withServletContext
.
Method Detail
favorPathExtension
public ContentNegotiationConfigurer favorPathExtension(boolean favorPathExtension)
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 whitelisted 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)
and JAF (if present) to resolve path extensions. To change this behavior see theuseJaf(boolean)
property.- Parameters:
extension
- the key to look upmediaType
- the media type- See Also:
mediaTypes(Map)
,replaceMediaTypes(Map)
mediaTypes
public ContentNegotiationConfigurer mediaTypes(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
public ContentNegotiationConfigurer ignoreUnknownPathExtensions(boolean ignore)
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
public ContentNegotiationConfigurer useJaf(boolean useJaf)
WhenfavorPathExtension(boolean)
is set, this property determines whether to allow use of JAF (Java Activation Framework) to resolve a path extension to a specific MediaType.By default this is not set in which case
PathExtensionContentNegotiationStrategy
will use JAF 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 defaultContentType)
Set the default content type to use when no content type is requested.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()
getContentNegotiationManager
@Deprecated protected ContentNegotiationManager getContentNegotiationManager() throws Exception
Deprecated.as of 4.3.12, in favor ofbuildContentNegotiationManager()
- Throws:
Exception