package eu.kielczewski.akanke.web.config; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.web.DispatcherServletAutoConfiguration; import org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.env.Environment; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.resource.*; @Configuration @AutoConfigureAfter(DispatcherServletAutoConfiguration.class) public class WebMvcConfig extends WebMvcAutoConfiguration.WebMvcAutoConfigurationAdapter { @Autowired private Environment env; @Value("${akanke.documents.path}") private String applicationDocumentsPath; @Value("${akanke.resources.path}") private String applicationResourcesPath; @Value("${spring.resources.cache-period:31557000}") private Integer cachePeriod; @Bean public ResourceUrlEncodingFilter resourceUrlEncodingFilter() { return new ResourceUrlEncodingFilter(); } @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { boolean devMode = this.env.acceptsProfiles("dev"); boolean useResourceCache = !devMode; Integer useCachePeriod = devMode ? 0 : cachePeriod; registry.addResourceHandler("/public/**") .addResourceLocations("file:" + applicationResourcesPath + "/") .setCachePeriod(useCachePeriod) .resourceChain(useResourceCache) .addResolver(new GzipResourceResolver()) .addResolver(new VersionResourceResolver().addContentVersionStrategy("/**")) .addTransformer(new AppCacheManifestTransformer()); registry.addResourceHandler("/images/**", "/wp-content/uploads/**") .addResourceLocations("file:" + applicationDocumentsPath + "/resources/") .setCachePeriod(useCachePeriod) .resourceChain(useResourceCache) .addResolver(new PathResourceResolver()) .addTransformer(new AppCacheManifestTransformer()); } }