Package org.springframework.web.servlet.resource

# 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 (for example, 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 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.

Since:
  5.1
Author:
  Rossen Stoyanchev

## Field Summary

Fields
Modifier and Type
Field
Description
`static final 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

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 to `setExtensions(Map)`.
`protected org.springframework.core.io.Resource`
`resolveResourceInternal(HttpServletRequest request, String requestPath, List<? extends org.springframework.core.io.Resource> locations, ResourceResolverChain chain)`
`protected String`
`resolveUrlPathInternal(String resourceUrlPath, List<? extends org.springframework.core.io.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`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Field Details

### DEFAULT_CODINGS

public static final List<String> DEFAULT_CODINGS
The default content codings.

## Constructor Details

### EncodedResourceResolver

public EncodedResourceResolver()

## Method Details

### 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)` 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"].

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 to `setExtensions(Map)`.

Parameters:
  `coding` - the content coding
  `extension` - the associated file extension

### resolveResourceInternal

@Nullable protected org.springframework.core.io.Resource resolveResourceInternal(@Nullable HttpServletRequest request, String requestPath, List<? extends org.springframework.core.io.Resource> locations, ResourceResolverChain chain)

Specified by:
  `resolveResourceInternal` in class `AbstractResourceResolver`

### resolveUrlPathInternal

@Nullable protected String resolveUrlPathInternal(String resourceUrlPath, List<? extends org.springframework.core.io.Resource> locations, ResourceResolverChain chain)

Specified by:
  `resolveUrlPathInternal` in class `AbstractResourceResolver`