静态资源配置说明
Spring项目中对于附件访问、静态资源访问这些都是属于Web领域范围,所以在Spring家族中,SpringMvc承担着对Web访问控制相关的配置。
例如下面的配置文件 application.yml ,配置了默认的静态资源文件,浏览器访问的映射为根目录,即 /**。
## 据源配置
spring:
#添加静态资源文件目录
mvc:
static-path-pattern: /**
resources:
static-locations: classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/
通过以上配置,我们可以将系统上传的附件也加进去,然后通过系统的根目录就可以访问了。但是不推荐这样做(上面的配置中,更适用静态的资源文件,我们上传的附件必定是动态资源),所以,最好配置一个专门为上传附件访问的虚拟路径,来提供访问。
配置SpringMvc虚拟访问路径
首先创建一个配置类,继承 WebMvcConfigurerAdapter,然后重写addResourceHandlers函数,如下:
/**
* Spring MVC 配置
*/
@Configuration
public class WebMvcConfig extends WebMvcConfigurerAdapter {
//附件web虚拟访问目录
@Value("${web.upload.access_path}")
private String uploadAccessPath;
//附件物理文件夹目录
@Value("${web.upload.file_path}")
private String uploadFolder;
//注册web文件资源访问地址
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler(uploadAccessPath).addResourceLocations("file:" + uploadFolder);
}
}
其中,分别在配置文件里定义了两个变量:
# 附件路径设置
web:
upload:
file_path: /usr/local/server/corpdata-space/file/
access_path: /api/file/**
file_path
,物理路径,上传或访问附件时需要进行IO处理的的真实路径;
access_path
,虚拟路径,在http请求时映射物理路径的资源路径。
这样,我们的附件文件,就可以通过 /api/file/ 来访问了,比如在 /usr/local/server/corpdata-space/file/ 下有个附件,1.jpg,那么通过http可以请求 http://localhost/api/file/1.jpg 地址来访问。
⭐ 注意一点,配置的目录物理路径,在末尾一定要增加/结束,不然会请求提示404问题。
作者: Zealon
崇尚简单,一切简单自然的事物都是美好的。