微人事第四天: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了。
上一篇: 阿里云腾讯云yum方式快速搭建amp环境
下一篇: 【Mpue】记录我遇到的天坑