今天我们讲一下spring-boot中有关访问路径配置的知识,spring.mvc.static-path-pattern和spring.resources.static-locations的区别。
没有配置
debug启动项目,看一下WebMvcAutoConfiguration类中的属性,如图
pathPatterns:表示请求的路径
locationValues:表示资源存放的位置
如果我的请求为“http://localhost:80/index.html”,则根据pathPatterns的配置,我会解析出“index.html”,并在locationValues配置的四个位置找资源“index.html”(最后一个“/”不属于classPath中的,不做考虑)。
而恰巧,在目录“public”下有index.html,所以下面的访问是可以成功的
配置spring.mvc.static-path-pattern
现在我们配置spring.mvc.static-path-pattern,如下图
pathPatterns值为“/boot/**”,locationValues还是那四个默认值。
我们访问“http://locahost:8080/index.html”则找不到资源。
当我们访问“http://localhost:8080/boot/index.html”
访问到了,而且注意这是public下的资源,不是boot下的资源,验证我们的分析是没有错的。
配置spring.resources.static-locations
如图,我们配置spring.resources.static-locations。需要注意的是,这个配置得加上classpath:
pathPatterns值为“/”,locationValues值为“classpath:/boot/”,那就是我们访问“http://localhost:8080/index.html”时,能访问到“boot”目录下的“index.html”,结果如下
总结
spring.mvc.static-path-pattern:只会改变请问路径,资源还是放在默认的四个路径下
spring.resources.static-locations:不会改变访问路径,只是改变资源的放置路径