Merge pull request #5171 from bclozel/gh-4683

* pr/5171:
  Polish contribution
  Add configuration key for GzipResourceResolver
pull/5167/merge
Stephane Nicoll 9 years ago
commit c81ba0a951

@ -169,6 +169,12 @@ public class ResourceProperties implements ResourceLoaderAware {
*/ */
private boolean htmlApplicationCache = false; private boolean htmlApplicationCache = false;
/**
* Enable resolution of already gzipped resources. Checks for a resource
* name variant with the *.gz extension.
*/
private boolean gzipped = false;
@NestedConfigurationProperty @NestedConfigurationProperty
private final Strategy strategy = new Strategy(); private final Strategy strategy = new Strategy();
@ -208,6 +214,14 @@ public class ResourceProperties implements ResourceLoaderAware {
this.htmlApplicationCache = htmlApplicationCache; this.htmlApplicationCache = htmlApplicationCache;
} }
public boolean isGzipped() {
return this.gzipped;
}
public void setGzipped(boolean gzipped) {
this.gzipped = gzipped;
}
} }
/** /**

@ -85,6 +85,7 @@ import org.springframework.web.servlet.i18n.FixedLocaleResolver;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter; import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping; import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
import org.springframework.web.servlet.resource.AppCacheManifestTransformer; import org.springframework.web.servlet.resource.AppCacheManifestTransformer;
import org.springframework.web.servlet.resource.GzipResourceResolver;
import org.springframework.web.servlet.resource.ResourceHttpRequestHandler; import org.springframework.web.servlet.resource.ResourceHttpRequestHandler;
import org.springframework.web.servlet.resource.ResourceResolver; import org.springframework.web.servlet.resource.ResourceResolver;
import org.springframework.web.servlet.resource.VersionResourceResolver; import org.springframework.web.servlet.resource.VersionResourceResolver;
@ -396,6 +397,9 @@ public class WebMvcAutoConfiguration {
if (strategy.getFixed().isEnabled() || strategy.getContent().isEnabled()) { if (strategy.getFixed().isEnabled() || strategy.getContent().isEnabled()) {
chain.addResolver(getVersionResourceResolver(strategy)); chain.addResolver(getVersionResourceResolver(strategy));
} }
if (properties.isGzipped()) {
chain.addResolver(new GzipResourceResolver());
}
if (properties.isHtmlApplicationCache()) { if (properties.isHtmlApplicationCache()) {
chain.addTransformer(new AppCacheManifestTransformer()); chain.addTransformer(new AppCacheManifestTransformer());
} }

@ -71,6 +71,7 @@ import org.springframework.web.servlet.resource.CachingResourceTransformer;
import org.springframework.web.servlet.resource.ContentVersionStrategy; import org.springframework.web.servlet.resource.ContentVersionStrategy;
import org.springframework.web.servlet.resource.CssLinkResourceTransformer; import org.springframework.web.servlet.resource.CssLinkResourceTransformer;
import org.springframework.web.servlet.resource.FixedVersionStrategy; 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.PathResourceResolver;
import org.springframework.web.servlet.resource.ResourceHttpRequestHandler; import org.springframework.web.servlet.resource.ResourceHttpRequestHandler;
import org.springframework.web.servlet.resource.ResourceResolver; import org.springframework.web.servlet.resource.ResourceResolver;
@ -228,11 +229,13 @@ public class WebMvcAutoConfigurationTests {
"spring.resources.chain.strategy.fixed.enabled:true", "spring.resources.chain.strategy.fixed.enabled:true",
"spring.resources.chain.strategy.fixed.version:test", "spring.resources.chain.strategy.fixed.version:test",
"spring.resources.chain.strategy.fixed.paths:/**/*.js", "spring.resources.chain.strategy.fixed.paths:/**/*.js",
"spring.resources.chain.html-application-cache:true"); "spring.resources.chain.html-application-cache:true",
assertThat(getResourceResolvers("/webjars/**")).hasSize(2); "spring.resources.chain.gzipped:true");
assertThat(getResourceResolvers("/webjars/**")).hasSize(3);
assertThat(getResourceTransformers("/webjars/**")).hasSize(2); assertThat(getResourceTransformers("/webjars/**")).hasSize(2);
assertThat(getResourceResolvers("/**")).extractingResultOf("getClass") assertThat(getResourceResolvers("/**")).extractingResultOf("getClass")
.containsOnly(VersionResourceResolver.class, PathResourceResolver.class); .containsOnly(VersionResourceResolver.class, GzipResourceResolver.class,
PathResourceResolver.class);
assertThat(getResourceTransformers("/**")).extractingResultOf("getClass") assertThat(getResourceTransformers("/**")).extractingResultOf("getClass")
.containsOnly(CssLinkResourceTransformer.class, .containsOnly(CssLinkResourceTransformer.class,
AppCacheManifestTransformer.class); AppCacheManifestTransformer.class);

@ -322,6 +322,7 @@ content into your application; rather pick only the properties that you need.
spring.resources.cache-period= # Cache period for the resources served by the resource handler, in seconds. spring.resources.cache-period= # Cache period for the resources served by the resource handler, in seconds.
spring.resources.chain.cache=true # Enable caching in the Resource chain. spring.resources.chain.cache=true # Enable caching in the Resource chain.
spring.resources.chain.enabled= # Enable the Spring Resource Handling chain. Disabled by default unless at least one strategy has been enabled. spring.resources.chain.enabled= # Enable the Spring Resource Handling chain. Disabled by default unless at least one strategy has been enabled.
spring.resources.chain.gzipped=false # Enable resolution of already gzipped resources.
spring.resources.chain.html-application-cache=false # Enable HTML5 application cache manifest rewriting. spring.resources.chain.html-application-cache=false # Enable HTML5 application cache manifest rewriting.
spring.resources.chain.strategy.content.enabled=false # Enable the content Version Strategy. spring.resources.chain.strategy.content.enabled=false # Enable the content Version Strategy.
spring.resources.chain.strategy.content.paths=/** # Comma-separated list of patterns to apply to the Version Strategy. spring.resources.chain.strategy.content.paths=/** # Comma-separated list of patterns to apply to the Version Strategy.

Loading…
Cancel
Save