微人事第四天:Spring Boot静态资源访问

现在我们做个实验:
1.创建springboot项目,只引入web依赖
在这里插入图片描述
2.在static目录下创建hello.js

hello sping boot!

3.启动项目
访问路径:http://localhost:8080/hello.js
结果:
在这里插入图片描述

从上面的步骤可以看出访问路径中没有加static目录也能访问到hello.js文件,那如果放在resources目录下的其他文件夹下还能访问到吗?答案肯定是不能的,springboot肯定是在哪里做了默认路径配置。

在 WebMvcAutoConfiguration 类中看到了 SpringMVC 自动化配置的相关的内容,找到了静态资源拦截的配置,如下:
在这里插入图片描述
可以看到这里静态资源的定义和我们前面提到的Java配置SSM中的配置非常相似,其中,this.mvcProperties.getStaticPathPattern() 方法对应的值是 “/**”,this.resourceProperties.getStaticLocations()方法返回了四个位置,分别是:”classpath:/META-INF/resources/“, “classpath:/resources/“,”classpath:/static/“, “classpath:/public/“,然后在getResourceLocations方法中,又添加了“/”,因此这里返回值一共有5个。其中,/表示webapp目录,即webapp中的静态文件也可以直接访问。静态资源的匹配路径按照定义路径优先级依次降低。因此这里的配置和我们前面提到的如出一辙。这样大伙就知道了为什么Spring Boot 中支持5个静态资源位置,同时也明白了为什么静态资源请求路径中不需要/static,因为在路径映射中已经自动的添加上了/static了。

发布了287 篇原创文章 · 获赞 24 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_41998938/article/details/103974691
今日推荐