当前位置: 首页 > 图灵资讯 > 技术篇> 【SpringBoot】如何配置静态资源的地址与访问路径

【SpringBoot】如何配置静态资源的地址与访问路径

来源:图灵教育
时间:2023-06-06 09:33:01

设计的Spring等静态资源,如HTML文件和JS文件 有两种Boot配置,一种是“spring.mvc.static-path-pattern”,一是“spring.resources.static-locations很多人很难分辨它们之间的差异,所以经常发生的结果是404错误,静态资源找不到。

1. spring.mvc.static-path-pattern

spring.mvc.static-path-pattern的意思是我们应该以什么样的方式访问静态资源,换句话说,只有静态资源才能满足什么样的匹配条件,Spring 以官方配置为例,Boot将处理静态资源请求:

#   这表明只有静态资源的访问路径是/resources/**只有在处理spring时才会处理请求.mvc.static-path-pattern=/resources/**,

假设采用默认配置端口,则只有要求地址类似于“http://localhost:8080/resources/jquery.js”时,Spring Boot将处理此请求,处理方法是根据模式匹配的文件名查找本地文件,那么应该在哪里查找本地文件呢?这就是“spring.resources.static-locations"的作用。

2. spring.resources.static-locations

“spring.resources.static-locations用来告诉Spring Boot应该在哪里找到静态资源文件,这是一个列表配置,依赖于配置顺序,默认的官方配置如下:

spring.resources.static-locations=classpath:/static,classpath:/public,classpath:/resources,classpath:/META-INF/resources

继续以上述请求地址为例,“http://localhost:8080/resources/jquery.js在上述四条路径中,我们将依次搜索是否存在“jquery.js“如果找到文件,返回文件,否则返回404错误。

3. Bean配置静态资源

从上面可以看出,“spring.mvc.static-path-pattern”与“spring.resources.static-locations如果熟悉Springgng的映射配置,则结合起来演绎nginx的映射配置 MVC,所以更容易理解,它们的作用可以用Bean配置来表示,如下:

@Configuration@EnableWebMvcpublic class WebConfig extends WebMvcConfigurerAdapter {@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {        registry.addResourceHandler("/resources/** 匹配要求路径                .addResourceLocations("/public-resources/")// 实际路径的映射                .setCacheControl(CacheControl.maxAge(1, TimeUnit.HOURS).cachePublic());    }}

或者等同于以下XML。

<mvc:resourcesmapping="/resources/**" location="/public-resources/"><mvc:cache-controlmax-age="3600"cache-public="true"/></mvc:resources>

结论

spring.mvc.static-path-pattern用于阐述HTTP请求地址

spring.resources.static-locations用于描述静态资源的实际存储位置