package com.juick.config; import java.net.MalformedURLException; import java.nio.file.Paths; import java.util.List; import java.util.concurrent.TimeUnit; import javax.inject.Inject; import org.springframework.beans.factory.annotation.Value; import org.springframework.cache.annotation.EnableCaching; import org.springframework.context.annotation.Configuration; import org.springframework.core.convert.converter.Converter; import org.springframework.format.FormatterRegistry; import org.springframework.http.CacheControl; import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import org.springframework.web.servlet.resource.VersionResourceResolver; @Configuration @EnableCaching @EnableAsync(proxyTargetClass = true) @EnableScheduling public class WebConfig implements WebMvcConfigurer { @Value("${storage_path:#{systemProperties['java.io.tmpdir']}}") private String baseDir; @Inject private List> converters; @Override public void addFormatters(FormatterRegistry registry) { for (Converter converter : converters) { registry.addConverter(converter); } } @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { try { registry .addResourceHandler("/**", "/i/a/**") .addResourceLocations("classpath:/static/", Paths.get(baseDir, "/i/a/").toUri().toURL().toString()) .setCacheControl(CacheControl.maxAge(365, TimeUnit.DAYS)) .resourceChain(false) .addResolver(new VersionResourceResolver().addContentVersionStrategy("/**", "/i/a/**")); } catch (MalformedURLException e) { e.printStackTrace(); } } }