SpringBoot打包成jar项目时,HTML页面和CSS等静态资源得放置目录是由规定的。开发中一些需要上传的资源如图片,通常我们会配置资源映射,将其存放在服务器的某个文件夹下。
在SpringBoot中打包成jar项目时,静态页面和css放置的目录有规定。在SpringBoot中相关配置在WebMvcAutoConfiguration接口中。通过这个分析所有/webjars/**都去classpath:/META-INF/resources/webjars/找资源。所谓的webjars是指以jar包的方式引入资源。
一般通过实现这个接口实现addResourceHandlers方法来设置资源映射,如图所示,springboot常用的static包下的静态文件映射就是这么做的。ResourceHandlerRegistry类负责储存资源文件的注册,将需要添加的请求路径注册进去并为其添加映射路径。(static/**代表所有static下的所有请求)
1 |
|
开发时经常会为上传图片做静态资源映射到服务器指定的地方,我们简单的映射到F:/upload/下,如图所示。
1 |
|
这样我们就能通过upload的请求找到对应的资源了。
然而不可能就这样将资源映射写死,每一次使用的时候都拼接完整的请求路径,所以我们会在配置文件中设定好路径映射,需要时通过@value将属性赋值使用,如图所示。也能使用@ConfigurationProperties在类上标识直接指定多个属性,就不多演示了。
1 | #上传的映射 |
1 |
|
以上只是第一种方式,常用的还有一种在配置文件中通过spring.resources.static-locations直接进行配置,如图。
1 | mvc: |
不能在staic-locations下只配置upload请求的映射,至少也要添加classpath:/static/ 不然存放再这个包下的如css,js的文件会获取不到。