SpringBoot中静态资源配置

SpringBoot的Web项目,会有很多静态资源。那么spring是如何加载静态资源的呢?

I、 默认配置

静态资源路径,SpringBoot默认从属性spring.web.resources.static-locations中取得。
对应的配置类为spring-boot-autoconfigure.jar的org.springframework.boot.autoconfigure.web.WebProperties,在spring boot 2.4.0以前定义在org.springframework.boot.autoconfigure.web.ResourceProperties中。

默认有四个路径,查找的优先级同数组顺序,从高到低。

private static final String[] CLASSPATH_RESOURCE_LOCATIONS = { "classpath:/META-INF/resources/", 
"classpath:/resources/", "classpath:/static/", "classpath:/public/" };
  1. /META-INF/resources/
  2. /resources/
  3. /static/
  4. /public/

2、配置文件方式修改

如果是properties文件的话,如下方式即可,

spring.web.resources.static-locations=classpath:/html/,classpath:/dist/

上面设置使得spring会扫描/html和/dist目录下的静态资源文件,且html目录的优先级是最高的(配置顺序中,优先级的高低从左到右)

3、Configurer方式修改

通过实现WebMvcConfigure接口的配置类。

public class MyResouceConfigurer implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        // 将资源路径 /rs 下的资源,映射到根目录为 /rs的访问路径下
        registry.addResourceHandler("/rs/**").addResourceLocations("classpath:/rs/");
    }
}

4.单独的资源Jar包

一些前后端分离的资源,可能根据需要会达成单独的jar来管理。
在springboot项目中,只要保证第三方jar包中资源在配置的classpath路径中,使用上并没有什么差别。

  1. 第三方jar包中路径和优先级同样适用配置或设定的配置。
  2. 相同资源路径下,当前包的资源优先级高于jar包中的静态资源’
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值