Spring Boot 对静态资源映射提供了默认配置:
自动映射了META-INF/resources > resources > static > public这四个路径,箭头即表明优先级顺序。springboot还有classpath:/META-INF/resources/webjars/此路径亦是映射静态资源的。下文介绍SpringBoot之使用WebJars。
现在开始对META-INF/resources > resources > static > public开始验证:
有些文件夹是初始没有的,需要自己新建,建好如下:
然后在对应4个文件夹下放入同一张图片
访问 http://localhost:8080/a.png,即可有访问到某一张a.png
接下来只要按顺序删除a.png就可以完成对优先级的验证。(也可以用4张同名图片但是不是相同图片来验证,效果更加明显)
自定义静态资源映射
springboot2.0后需要实现WebMvcConfigurer接口。注:使用代码实现不会覆盖系统默认4种方式(同名定义除外)
访问http://localhost:8080/yzg/b.png,即可访问静态资源src/main/resources/mysource/b.png
其中mac外部的目录试了几次都没成功,不知道是不是我格式写错了。这里放入windows的外部目录怎么访问
使用配置文件
spring.mvc.static-path-pattern(访问路径),对应addResourceHandler方法。此设置只是改变访问路径,4个文件夹的访问优先级不改变.其代表的含义是我们应该以什么样的路径来访问静态资源,换句话说,只有静态资源满足什么样的匹配条件,Spring Boot才会处理静态资源请求:
这表示springboot只会处理http://localhost:8080/resources/b.png这种请求
spring.resources.static-locations(映射路径),对应addResourceLocations方法。该配置将导致默认值失效,所以一般新增配置一定会兼容默认值。即用于告诉Spring Boot应该在何处查找静态资源文件,这是一个列表性的配置,查找文件时会依赖于配置的先后顺序依次进行。
springboot接收到了http://localhost:8080/resources/b.png类似格式请求后,会在上述4个文件夹按照优先级别开始查找有没有b.png,有则访问到该文件,没则报错404.如果想要增加新的文件夹,一定要如前面兼容这4个,否则这4个默认文件夹就会失效。如何兼容,在后面添加 “ ,”新的文件夹
如此这般,newsource也是一个静态资源文件夹了。访问http://localhost:8080/resources/b.png。
结论:“spring.mvc.static-path-pattern”用于阐述HTTP请求地址,而“spring.resources.static-locations”则用于描述静态资源的存放位置。
才疏学浅之处,切莫在意。
——2019.6.11 下午