Class EncodedResourceResolver
- java.lang.Object
- org.springframework.web.servlet.resource.AbstractResourceResolver
- org.springframework.web.servlet.resource.EncodedResourceResolver
- All Implemented Interfaces:
ResourceResolver
public class EncodedResourceResolver extends AbstractResourceResolver
Resolver that delegates to the chain, and if a resource is found, it then attempts to find an encoded (e.g. gzip, brotli) variant that is acceptable based on the "Accept-Encoding" request header.The list of supported
contentCodings
can be configured, in order of preference, and each coding must be associated withextensions
.Note that this resolver must be ordered ahead of a
VersionResourceResolver
with a content-based, version strategy to ensure the version calculation is not impacted by the encoding.- Since:
- 5.1
- Author:
- Rossen Stoyanchev
Field Summary
Fields Modifier and Type Field Description static List<String>
DEFAULT_CODINGS
The default content codings.Fields inherited from class org.springframework.web.servlet.resource.AbstractResourceResolver
logger
Constructor Summary
Constructors Constructor Description EncodedResourceResolver()
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description List<String>
getContentCodings()
Return a read-only list with the supported content codings.Map<String,String>
getExtensions()
Return a read-only map with coding-to-extension mappings.void
registerExtension(String coding, String extension)
Java config friendly alternative tosetExtensions(Map)
.protected Resource
resolveResourceInternal(HttpServletRequest request, String requestPath, List<? extends Resource> locations, ResourceResolverChain chain)
protected String
resolveUrlPathInternal(String resourceUrlPath, List<? extends Resource> locations, ResourceResolverChain chain)
void
setContentCodings(List<String> codings)
Configure the supported content codings in order of preference.void
setExtensions(Map<String,String> extensions)
Configure mappings from content codings to file extensions.Methods inherited from class org.springframework.web.servlet.resource.AbstractResourceResolver
resolveResource, resolveUrlPath
Field Detail
DEFAULT_CODINGS
public static final List<String> DEFAULT_CODINGS
The default content codings.
Constructor Detail
EncodedResourceResolver
public EncodedResourceResolver()
Method Detail
setContentCodings
public void setContentCodings(List<String> codings)
Configure the supported content codings in order of preference. The first coding that is present in the "Accept-Encoding" header for a given request, and that has a file present with the associated extension, is used.Note: Each coding must be associated with a file extension via
registerExtension(java.lang.String, java.lang.String)
orsetExtensions(java.util.Map<java.lang.String, java.lang.String>)
. Also customizations to the list of codings here should be matched by customizations to the same list inCachingResourceResolver
to ensure encoded variants of a resource are cached under separate keys.By default this property is set to ["br", "gzip"].
- Parameters:
codings
- one or more supported content codings
getContentCodings
public List<String> getContentCodings()
Return a read-only list with the supported content codings.
setExtensions
public void setExtensions(Map<String,String> extensions)
Configure mappings from content codings to file extensions. A dot "." will be prepended in front of the extension value if not present.By default this is configured with ["br" -> ".br"] and ["gzip" -> ".gz"].
- Parameters:
extensions
- the extensions to use.- See Also:
registerExtension(String, String)
getExtensions
public Map<String,String> getExtensions()
Return a read-only map with coding-to-extension mappings.
registerExtension
public void registerExtension(String coding, String extension)
Java config friendly alternative tosetExtensions(Map)
.- Parameters:
coding
- the content codingextension
- the associated file extension
resolveResourceInternal
protected Resource resolveResourceInternal(@Nullable HttpServletRequest request, String requestPath, List<? extends Resource> locations, ResourceResolverChain chain)
- Specified by:
resolveResourceInternal
in classAbstractResourceResolver
resolveUrlPathInternal
protected String resolveUrlPathInternal(String resourceUrlPath, List<? extends Resource> locations, ResourceResolverChain chain)
- Specified by:
resolveUrlPathInternal
in classAbstractResourceResolver