【发布时间】:2021-03-10 12:47:01
【问题描述】:
我有一个带有 Spring MVC 的“典型”(接近初始化项目的启动项目)Spring Boot 2.4 应用程序,我想向静态文件添加缓存。为此,我提供了我自己的@Configuration-class,它实现了WebMvcConfigurer。但无论我尝试什么,一旦我使用自己的配置,我总是会收到静态资源的 404 错误。
我的静态内容目录结构
src/main/resources/
|- static/
|- res/
|- css/
|- js/
|- images/
|- favicon.ico
问题/疑问
我认为我的误解在于 ResourceHandlerRegistry#addResourceHandler 和 ResourceHandlerRegistry#addResourceLocations 如何协同工作。
我尝试以类似于默认资源解析的方式进行操作(请参阅org.springframework.boot.autoconfigure.web.WebProperties.Resources.CLASSPATH_RESOURCE_LOCATIONS)并最终得到以下(无效)代码:
@Configuration
public class CacheStaticResourcesConfiguration implements WebMvcConfigurer {
@Override
public void addResourceHandlers(final ResourceHandlerRegistry registry) {
registry
.addResourceHandler("/favicon.ico", "/res/**", "/images/**")
.addResourceLocations("classpath:/static")
.setCacheControl(CacheControl.maxAge(7, TimeUnit.DAYS)
.noTransform()
.mustRevalidate());
}
}
【问题讨论】: