默认的静态资源映射
Spring Boot中的Spring MVC模块利用ResourceHttpRequestHandler来处理静态内容,对静态资源的映射提供了默认的配置。默认情况下,SpringBoot按如下优先级,从上到下将 /** 所有的资源访问映射到以下目录:
classpath:/META-INF/resources/
classpath:/resources/
classpath:/static/
classpath:/public/
/:当前项目的根路径
自定义静态资源访问路径
比如上传的图片一般放在磁盘的某个目录里,需要把静态资源的访问路径映射到磁盘的某个目录里。
编码的方式实现
这种方式比较灵活,可以同时设置多个静态资源访问路径映射到多个静态资源目录。
在Spring Boot 2.x的版本中使用的是Spring5,WebMvcConfigurerAdapter已经过时,可以直接实现WebMvcConfigurer接口,或者继承WebMvcConfigurationSupport 类来代替,都要实现addResourceHandlers()方法。
addResourceHandler:添加URL响应地址目录。
addResourceLocations:添加实际资源目录。
@Configuration
public class MyWebMvcConfig extends WebMvcConfigurationSupport {
@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
//保留默认的配置
registry.addResourceHandler("/**")
.addResourceLocations("classpath:/META-INF/resources/", "classpath:/resources/",
"classpath:/static/", "classpath:/public/");
//将所有E:/job/training/upload/目录下的资源,注意路径后一定要加/,访问时都映射到/image/** 路径下
registry.addResourceHandler("/image/**")
.addResourceLocations("file:E:/job/training/upload/");
//可以继续添加新的映射路径
}
}
配置文件的方式
#自定义的属性,指定了一个路径,注意要以/结尾
web.upload-path=F:/resources/
#表示所有的访问都经过静态资源路径
spring.mvc.static-path-pattern=/res/**
#配置所有的静态资源路径,要将默认的也加上否则static、public等这些路径将不能被当作静态资源路径.末尾是我们自己的自定义资源路径
spring.web.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/,file:${web.upload-path}
标签:SpringBoot,静态,路径,classpath,访问,static,资源,resources
From: https://blog.csdn.net/moxiong3212/article/details/137199640