【SpringBoot】配置静态资源

SpringBoot中有两项静态资源配置项:
1、spring.mvc.static-path-pattern
2、spring.resources.static-locations
配置出差错时,导致404错误,找不到静态资源;

1、 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 = classpath:/static,classpath:/public,classpath:/resources,classpath:/META-INF/resources

继续以上面的请求地址为例,“http://localhost:8080/resources/jquery.js”就会在上述的四个路径中依次查找是否存在“jquery.js”文件,如果找到了,则返回此文件,否则返回404错误。

2.1、配置file路径

需要指定的是一个具体的硬盘路径时,需要使用file,其他的使用classpath指的是系统环境变量;

file.uploadFolder = /home/uploadFiles/
spring.resources.static-locations = classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/,file:${file.uploadFolder}

3、静态资源的Bean配置

“spring.mvc.static-path-pattern”与“spring.resources.static-locations”组合起来演绎了nginx的映射配置,如果熟悉Spring MVC,那么理解起来更加简单,它们的作用可以用Bean配置表示,如下:

@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/resources/**")
                .addResourceLocations("/public-resources/")
                .setCacheControl(CacheControl.maxAge(1, TimeUnit.HOURS).cachePublic());
    }
}

或者等同与以下的XML;

<mvc:resources mapping="/resources/**" location="/public-resources/">
    <mvc:cache-control max-age="3600" cache-public="true"/>
</mvc:resources>

4、总结

“spring.mvc.static-path-pattern”用于阐述HTTP请求地址,而“spring.resources.static-locations”则用于描述静态资源的存放位置。

 

注:

这里特别说明下上述配置中提到的classpath。SpringBoot项目创建完成后,会生成该项目名称+iml后缀的文件。该文件位于项目的根目录下。打开后,在name="NewModuleRootManager"的component声明中,会有几个默认content声明。其中sourceFolder 中声明的就是classpath,只是类型不同。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值