springboot对静态资源的映射规则

基于springboot1.5.19的源码分析。

首先打开springboot自动配置类WebMvcAutoConfiguration找到addResourceHandlers方法:

这个方法对两种静态资源做了相应的处理,290行是对jar包方式引用的静态资源的处理,297行是对自定义的静态资源处理。

1、第290行,如果/webjars/**的请求得不到处理,就去classpath:/META-INF/resources/webjars/下找资源,setCachePeriod是设置缓存时间(配置文件中配置)。

比如说我现在去https://www.webjars.org/引入一个bootstrap的依赖,然后看它的目录结构

访问bootstrap.js的请求就应该是http://localhost:8080/webjars/bootstrap/4.3.1/js/bootstrap.js

 

可以看到顺利访问到静态资源了。

 

2、自定义的静态资源映射规则。

String staticPathPattern = this.mvcProperties.getStaticPathPattern();

staticPathPattern = "/**";

297行意思就是访问的任何请求/**如果得不到处理就会视为访问静态资源。

再来看看它对这种情况要到哪里去找:

找到了这个静态代码块,这个代码块就是复制CLASSPATH_RESOURCE_LOCATIONS这个静态常量的值,也就是说会在这几个位置去找资源:

"classpath:/META-INF/resources/"
"classpath:/resources/"
"classpath:/static/"
"classpath:/public/"

"/"当前项目的根路径

知道了这些我们就知道如何访问了,引入一个外部的jquery丢到resource/static下试试,

访问http://localhost:8080/jquery.js即可:

最后一种可以在配置文件中覆盖代码块的值:

yml文件遵循松散绑定,所以在properties文件映射时可以正确映射到

private String[] staticLocations = RESOURCE_LOCATIONS;

staticLocations的值啦,逗号分组会按照数组格式解析。

 

 

ps:关于缓存时间的配置:

也是在配置文件中配置,大家可以自己去试试。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值