Package org.springframework.web.accept
Class ContentNegotiationManager
java.lang.Object
org.springframework.web.accept.ContentNegotiationManager
- All Implemented Interfaces:
ContentNegotiationStrategy
,MediaTypeFileExtensionResolver
public class ContentNegotiationManager
extends Object
implements ContentNegotiationStrategy, MediaTypeFileExtensionResolver
Central class to determine requested media types
for a request. This is done by delegating to a list of configured
ContentNegotiationStrategy
instances.
Also provides methods to look up file extensions for a media type.
This is done by delegating to the list of configured
MediaTypeFileExtensionResolver
instances.
- Since:
- 3.2
- Author:
- Rossen Stoyanchev, Juergen Hoeller
-
Field Summary
Fields inherited from interface org.springframework.web.accept.ContentNegotiationStrategy
MEDIA_TYPE_ALL_LIST
-
Constructor Summary
ConstructorDescriptionCreate a default instance with aHeaderContentNegotiationStrategy
.A collection-based alternative toContentNegotiationManager(ContentNegotiationStrategy...)
.ContentNegotiationManager
(ContentNegotiationStrategy... strategies) Create an instance with the given list ofContentNegotiationStrategy
strategies each of which may also be an instance ofMediaTypeFileExtensionResolver
. -
Method Summary
Modifier and TypeMethodDescriptionvoid
addFileExtensionResolvers
(MediaTypeFileExtensionResolver... resolvers) Register moreMediaTypeFileExtensionResolver
instances in addition to those detected at construction.Get all registered file extensions.Return all registered lookup key to media type mappings by iteratingMediaTypeFileExtensionResolver
s.Return the configured content negotiation strategies.<T extends ContentNegotiationStrategy>
TgetStrategy
(Class<T> strategyType) Find aContentNegotiationStrategy
of the given type.resolveFileExtensions
(MediaType mediaType) Resolve the given media type to a list of file extensions.resolveMediaTypes
(NativeWebRequest request) Resolve the given request to a list of media types.
-
Constructor Details
-
ContentNegotiationManager
Create an instance with the given list ofContentNegotiationStrategy
strategies each of which may also be an instance ofMediaTypeFileExtensionResolver
.- Parameters:
strategies
- the strategies to use
-
ContentNegotiationManager
A collection-based alternative toContentNegotiationManager(ContentNegotiationStrategy...)
.- Parameters:
strategies
- the strategies to use- Since:
- 3.2.2
-
ContentNegotiationManager
public ContentNegotiationManager()Create a default instance with aHeaderContentNegotiationStrategy
.
-
-
Method Details
-
getStrategies
Return the configured content negotiation strategies.- Since:
- 3.2.16
-
getStrategy
Find aContentNegotiationStrategy
of the given type.- Parameters:
strategyType
- the strategy type- Returns:
- the first matching strategy, or
null
if none - Since:
- 4.3
-
addFileExtensionResolvers
Register moreMediaTypeFileExtensionResolver
instances in addition to those detected at construction.- Parameters:
resolvers
- the resolvers to add
-
resolveMediaTypes
public List<MediaType> resolveMediaTypes(NativeWebRequest request) throws HttpMediaTypeNotAcceptableException Description copied from interface:ContentNegotiationStrategy
Resolve the given request to a list of media types. The returned list is ordered by specificity first and by quality parameter second.- Specified by:
resolveMediaTypes
in interfaceContentNegotiationStrategy
- Parameters:
request
- the current request- Returns:
- the requested media types, or
ContentNegotiationStrategy.MEDIA_TYPE_ALL_LIST
if none were requested. - Throws:
HttpMediaTypeNotAcceptableException
- if the requested media types cannot be parsed
-
resolveFileExtensions
Description copied from interface:MediaTypeFileExtensionResolver
Resolve the given media type to a list of file extensions.- Specified by:
resolveFileExtensions
in interfaceMediaTypeFileExtensionResolver
- Parameters:
mediaType
- the media type to resolve- Returns:
- a list of extensions or an empty list (never
null
)
-
getAllFileExtensions
Get all registered file extensions.At startup this method returns extensions explicitly registered with either
PathExtensionContentNegotiationStrategy
orParameterContentNegotiationStrategy
. At runtime if there is a "path extension" strategy and itsuseRegisteredExtensionsOnly
property is set to "false", the list of extensions may increase as file extensions are resolved viaMediaTypeFactory
and cached.- Specified by:
getAllFileExtensions
in interfaceMediaTypeFileExtensionResolver
- Returns:
- a list of extensions or an empty list (never
null
)
-
getMediaTypeMappings
Return all registered lookup key to media type mappings by iteratingMediaTypeFileExtensionResolver
s.- Since:
- 5.2.4
-