public class EncodedResourceResolver extends AbstractResourceResolver
The list of supported contentCodings
can
be configured, in order of preference, and each coding must be associated
with extensions
.
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.
Modifier and Type | Class and Description |
---|---|
(package private) static class |
EncodedResourceResolver.EncodedResource
An encoded
HttpResource . |
Modifier and Type | Field and Description |
---|---|
private java.util.List<java.lang.String> |
contentCodings |
static java.util.List<java.lang.String> |
DEFAULT_CODINGS
The default content codings.
|
private java.util.Map<java.lang.String,java.lang.String> |
extensions |
logger
Constructor and Description |
---|
EncodedResourceResolver() |
Modifier and Type | Method and Description |
---|---|
private java.lang.String |
getAcceptEncoding(ServerWebExchange exchange) |
java.util.List<java.lang.String> |
getContentCodings()
Return a read-only list with the supported content codings.
|
private java.lang.String |
getExtension(java.lang.String coding) |
java.util.Map<java.lang.String,java.lang.String> |
getExtensions()
Return a read-only map with coding-to-extension mappings.
|
void |
registerExtension(java.lang.String coding,
java.lang.String extension)
Java config friendly alternative to
setExtensions(Map) . |
protected <any> |
resolveResourceInternal(ServerWebExchange exchange,
java.lang.String requestPath,
java.util.List<? extends Resource> locations,
ResourceResolverChain chain) |
protected <any> |
resolveUrlPathInternal(java.lang.String resourceUrlPath,
java.util.List<? extends Resource> locations,
ResourceResolverChain chain) |
void |
setContentCodings(java.util.List<java.lang.String> codings)
Configure the supported content codings in order of preference.
|
void |
setExtensions(java.util.Map<java.lang.String,java.lang.String> extensions)
Configure mappings from content codings to file extensions.
|
resolveResource, resolveUrlPath
public static final java.util.List<java.lang.String> DEFAULT_CODINGS
private final java.util.List<java.lang.String> contentCodings
private final java.util.Map<java.lang.String,java.lang.String> extensions
public void setContentCodings(java.util.List<java.lang.String> codings)
Note: Each coding must be associated with a file
extension via registerExtension(java.lang.String, java.lang.String)
or setExtensions(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 in CachingResourceResolver
to
ensure encoded variants of a resource are cached under separate keys.
By default this property is set to ["br", "gzip"].
codings
- one or more supported content codingspublic java.util.List<java.lang.String> getContentCodings()
public void setExtensions(java.util.Map<java.lang.String,java.lang.String> extensions)
By default this is configured with ["br" -> ".br"] and ["gzip" -> ".gz"].
extensions
- the extensions to use.registerExtension(String, String)
public java.util.Map<java.lang.String,java.lang.String> getExtensions()
public void registerExtension(java.lang.String coding, java.lang.String extension)
setExtensions(Map)
.coding
- the content codingextension
- the associated file extensionprotected <any> resolveResourceInternal(@Nullable ServerWebExchange exchange, java.lang.String requestPath, java.util.List<? extends Resource> locations, ResourceResolverChain chain)
resolveResourceInternal
in class AbstractResourceResolver
@Nullable private java.lang.String getAcceptEncoding(ServerWebExchange exchange)
private java.lang.String getExtension(java.lang.String coding)
protected <any> resolveUrlPathInternal(java.lang.String resourceUrlPath, java.util.List<? extends Resource> locations, ResourceResolverChain chain)
resolveUrlPathInternal
in class AbstractResourceResolver