WebMvcConfigurer配置类其实是Spring内部的一种配置方式,采用JavaBean的形式来代替传统的xml配置文件形式进行针对框架个性化定制,可以自定义一些Handler,Interceptor,ViewResolver,MessageConverter。基于java-based方式的spring mvc配置,需要创建一个配置类并实现WebMvcConfigurer 接口;
在Spring Boot 1.5版本都是靠重写WebMvcConfigurerAdapter的方法来添加自定义拦截器,消息转换器等。SpringBoot 2.0 后,该类被标记为@Deprecated(弃用)。官方推荐直接实现WebMvcConfigurer或者直接继承WebMvcConfigurationSupport,方式一实现WebMvcConfigurer接口(推荐),方式二继承WebMvcConfigurationSupport类,具体实现可看这篇文章。https://blog.youkuaiyun.com/fmwind/article/details/82832758
@Configuration
public class ResourceConfig extends WebMvcConfigurationSupport {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
//在windows环境下的图片存放资源路径
String winPath = System.getProperty("user.dir")+"\\src\\main\\resources\\static\\files\\";
//在Linux环境下的图片存放资源路径
String linuxPath = "/usr/local/my_project/files/";
String os = System.getProperty("os.name");
if (os.toLowerCase().startsWith("win")) { //windows系统
//第一个方法设置访问路径前缀,第二个方法设置资源路径
registry.addResourceHandler("/files/**").
addResourceLocations("file:"+winPath);
}else{//linux系统
registry.addResourceHandler("/files/**").
addResourceLocations("file:"+linuxPath);
}
super.addResourceHandlers(registry);
}
}
这里主要是根据图片来说,静态资源也可以是音频,大文件
这里就是拦截所有请求中带有/file/的URL,/files/**为Java的虚拟路径
registry.addResourceHandler("/files/**").
linuxPath:为文件在磁盘中的真是路径,所以上述所有请求文件都会转到下面的路径上去找对应的文件
addResourceLocations("file:"+linuxPath);
(感觉还是理解的说的不是很清楚,有懂的伙伴可以讲解讲解!)
关于为什么要在路径前面加file:
file:/// 是ftp传输的标准头格式,用于传输文件。类似http://,用于加载网页
关于File类:
File类是Java IO系统中的关键类,这个名字有一定的误导性,它可能会被认为是一个文件。
实际上它既能代表一个特定文件的名称,也能代表一个目录,用文件路径来称呼会比较容易理解。
2598

被折叠的 条评论
为什么被折叠?



