public class ContentNegotiationManagerFactoryBean extends java.lang.Object implements org.springframework.beans.factory.FactoryBean<ContentNegotiationManager>, ServletContextAware, org.springframework.beans.factory.InitializingBean
ContentNegotiationManager
and configure it with
one or more ContentNegotiationStrategy
instances.
As of 5.0 you can set the exact strategies to use via
setStrategies(List)
.
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:
Property Setter | Underlying Strategy | Default Setting |
---|---|---|
setFavorPathExtension(boolean) |
Path Extension strategy |
On |
favorParameter |
Parameter strategy |
Off |
ignoreAcceptHeader |
Header strategy |
On |
defaultContentType |
Fixed content strategy |
Not set |
defaultContentTypeStrategy |
ContentNegotiationStrategy |
Not set |
setFavorPathExtension(boolean)
to false or otherwise set the strategies to use explicitly via
setStrategies(List)
.Constructor and Description |
---|
ContentNegotiationManagerFactoryBean() |
Modifier and Type | Method and Description |
---|---|
void |
addMediaType(java.lang.String fileExtension,
MediaType mediaType)
An alternative to
setMediaTypes(java.util.Properties) for use in Java code. |
void |
addMediaTypes(java.util.Map<java.lang.String,MediaType> mediaTypes)
An alternative to
setMediaTypes(java.util.Properties) for use in Java code. |
void |
afterPropertiesSet() |
ContentNegotiationManager |
build()
Actually build the
ContentNegotiationManager . |
ContentNegotiationManager |
getObject() |
java.lang.Class<?> |
getObjectType() |
boolean |
isSingleton() |
void |
setDefaultContentType(MediaType contentType)
Set the default content type to use when no content type is requested.
|
void |
setDefaultContentTypes(java.util.List<MediaType> contentTypes)
Set the default content types to use when no content type is requested.
|
void |
setDefaultContentTypeStrategy(ContentNegotiationStrategy strategy)
Set a custom
ContentNegotiationStrategy to use to determine
the content type to use when no content type is requested. |
void |
setFavorParameter(boolean favorParameter)
Whether a request parameter ("format" by default) should be used to
determine the requested media type.
|
void |
setFavorPathExtension(boolean favorPathExtension)
Whether the path extension in the URL path should be used to determine
the requested media type.
|
void |
setIgnoreAcceptHeader(boolean ignoreAcceptHeader)
Whether to disable checking the 'Accept' request header.
|
void |
setIgnoreUnknownPathExtensions(boolean ignore)
Whether to ignore requests with path extension that cannot be resolved
to any media type.
|
void |
setMediaTypes(java.util.Properties mediaTypes)
Add a mapping from a key, extracted from a path extension or a query
parameter, to a MediaType.
|
void |
setParameterName(java.lang.String parameterName)
Set the query parameter name to use when
setFavorParameter(boolean) is on. |
void |
setServletContext(ServletContext servletContext)
Invoked by Spring to inject the ServletContext.
|
void |
setStrategies(java.util.List<ContentNegotiationStrategy> strategies)
Set the exact list of strategies to use.
|
void |
setUseJaf(boolean useJaf)
Deprecated.
as of 5.0, in favor of
setUseRegisteredExtensionsOnly(boolean) , which
has reverse behavior. |
void |
setUseRegisteredExtensionsOnly(boolean useRegisteredExtensionsOnly)
When
favorPathExtension or
setFavorParameter(boolean) is set, this property determines
whether to use only registered MediaType mappings or to allow
dynamic resolution, e.g. |
public ContentNegotiationManagerFactoryBean()
public void setStrategies(@Nullable java.util.List<ContentNegotiationStrategy> strategies)
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.
strategies
- the strategies to usepublic void setFavorPathExtension(boolean favorPathExtension)
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.
public void setMediaTypes(java.util.Properties mediaTypes)
The path extension strategy will also try to use
ServletContext.getMimeType(java.lang.String)
and
MediaTypeFactory
to resolve path extensions.
mediaTypes
- media type mappingsaddMediaType(String, MediaType)
,
addMediaTypes(Map)
public void addMediaType(java.lang.String fileExtension, MediaType mediaType)
setMediaTypes(java.util.Properties)
for use in Java code.public void addMediaTypes(@Nullable java.util.Map<java.lang.String,MediaType> mediaTypes)
setMediaTypes(java.util.Properties)
for use in Java code.public void setIgnoreUnknownPathExtensions(boolean ignore)
false
will result in an
HttpMediaTypeNotAcceptableException
if there is no match.
By default this is set to true
.
@Deprecated public void setUseJaf(boolean useJaf)
setUseRegisteredExtensionsOnly(boolean)
, which
has reverse behavior.public void setUseRegisteredExtensionsOnly(boolean useRegisteredExtensionsOnly)
favorPathExtension
or
setFavorParameter(boolean)
is set, this property determines
whether to use only registered MediaType
mappings or to allow
dynamic resolution, e.g. via MediaTypeFactory
.
By default this is not set in which case dynamic resolution is on.
public void setFavorParameter(boolean favorParameter)
media type mappings
.
By default this is set to false
.
setParameterName(java.lang.String)
public void setParameterName(java.lang.String parameterName)
setFavorParameter(boolean)
is on.
The default parameter name is "format"
.
public void setIgnoreAcceptHeader(boolean ignoreAcceptHeader)
By default this value is set to false
.
public void setDefaultContentType(MediaType contentType)
By default this is not set.
public void setDefaultContentTypes(java.util.List<MediaType> contentTypes)
By default this is not set.
public void setDefaultContentTypeStrategy(ContentNegotiationStrategy strategy)
ContentNegotiationStrategy
to use to determine
the content type to use when no content type is requested.
By default this is not set.
setDefaultContentType(org.springframework.http.MediaType)
public void setServletContext(ServletContext servletContext)
setServletContext
in interface ServletContextAware
servletContext
- ServletContext object to be used by this objectInitializingBean.afterPropertiesSet()
,
ApplicationContextAware.setApplicationContext(org.springframework.context.ApplicationContext)
public void afterPropertiesSet()
afterPropertiesSet
in interface org.springframework.beans.factory.InitializingBean
public ContentNegotiationManager build()
ContentNegotiationManager
.@Nullable public ContentNegotiationManager getObject()
getObject
in interface org.springframework.beans.factory.FactoryBean<ContentNegotiationManager>
public java.lang.Class<?> getObjectType()
getObjectType
in interface org.springframework.beans.factory.FactoryBean<ContentNegotiationManager>
public boolean isSingleton()
isSingleton
in interface org.springframework.beans.factory.FactoryBean<ContentNegotiationManager>