Support EncodedResourceResolver in resource chain

As of https://jira.spring.io/browse/SPR-16381, Spring Framework now
supports both gzip and Brotli as compression formats for static
resources resolved by the resource chain.

The `GzipResourceResolver` has been deprecated and replaced by the
`EncodedResourceResolver`. This commit uses this new resolver and adapts
the configuration key to reflect those changes.

Note that this resolver is now configured ahead of the
`VersionResourceResolver`.

Closes gh-13242
This commit is contained in:
Brian Clozel
2018-06-05 17:18:45 +02:00
parent ace5ba5984
commit 56ab0da287
6 changed files with 30 additions and 21 deletions

View File

@@ -90,8 +90,8 @@ import org.springframework.web.servlet.resource.CachingResourceResolver;
import org.springframework.web.servlet.resource.CachingResourceTransformer;
import org.springframework.web.servlet.resource.ContentVersionStrategy;
import org.springframework.web.servlet.resource.CssLinkResourceTransformer;
import org.springframework.web.servlet.resource.EncodedResourceResolver;
import org.springframework.web.servlet.resource.FixedVersionStrategy;
import org.springframework.web.servlet.resource.GzipResourceResolver;
import org.springframework.web.servlet.resource.PathResourceResolver;
import org.springframework.web.servlet.resource.ResourceHttpRequestHandler;
import org.springframework.web.servlet.resource.ResourceResolver;
@@ -276,21 +276,21 @@ public class WebMvcAutoConfigurationTests {
"spring.resources.chain.strategy.fixed.version:test",
"spring.resources.chain.strategy.fixed.paths:/**/*.js",
"spring.resources.chain.html-application-cache:true",
"spring.resources.chain.gzipped:true").run((context) -> {
"spring.resources.chain.compressed:true").run((context) -> {
assertThat(getResourceResolvers(context, "/webjars/**")).hasSize(3);
assertThat(getResourceTransformers(context, "/webjars/**"))
.hasSize(2);
assertThat(getResourceResolvers(context, "/**"))
.extractingResultOf("getClass")
.containsOnly(VersionResourceResolver.class,
GzipResourceResolver.class,
.containsOnly(EncodedResourceResolver.class,
VersionResourceResolver.class,
PathResourceResolver.class);
assertThat(getResourceTransformers(context, "/**"))
.extractingResultOf("getClass")
.containsOnly(CssLinkResourceTransformer.class,
AppCacheManifestTransformer.class);
VersionResourceResolver resolver = (VersionResourceResolver) getResourceResolvers(
context, "/**").get(0);
context, "/**").get(1);
Map<String, VersionStrategy> strategyMap = resolver.getStrategyMap();
assertThat(strategyMap.get("/*.png"))
.isInstanceOf(ContentVersionStrategy.class);