springboot项目静态映射关于路径的填写小总结

时间:2025-04-14 17:49:50

我们再写springboot项目的时候经常要使用到接口 WebMvcConfigurer

用这个接口大部分的目的都用来重写 addResourceHandlers 方法

为的就是将本地的文件静态映射到Tomcat服务器上

还需用到的两个类就是 addResourceHandler 和 addResourceLocations

这里就来总结一下这两个的参数填写

第一种:

import ;
import ;
import ;

@Configuration
public class WebAppconfigurer implements WebMvcConfigurer {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        ("/image/**").addResourceLocations("file:D:\\aaa\\bbb\\ccc\\");   
      
    }
}

  addResourceHandler("/image/**")里面填写的路径参数虚拟路径,就是用来网路请求的路径,可以填写成自己想写的 即("/ 自己要写的虚拟路径 /**"),下面都是一样的填写。

而addResourceLocations("file:D:\\aaa\\bbb\\ccc\\")就是第一种路径填写方法,直接填写绝对路径。经过网路请求将会访问到  D:\aaa\bbb\ccc\  下的文件。这里必须有 file:而且 \ 要写两遍

第二种:

 @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        ("/image/**").addResourceLocations("classpath:/images/aaa/");
        ("/file/**").addResourceLocations("classpath:/images/bbb/");
                
    }
"classpath:/images/aaa/"就是自己的项目的根目录下的文件,就是存放在resources里面的文件夹对应的文件。

第三种:

@Configuration
@Slf4j
public class WebAppconfigurer extends WebMvcConfigurationSupport {

    @Value("${ImagesFilePath}")
    private String ImagesFilePath;
    
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        ("/image/**").addResourceLocations("file:"+ImagesFilePath);
    }
}

这种写法是常用的,因为方便管理,但需要配置

    配置如下:

#Windows下的路径配置
ImagesFilePath: D:\aaa\bbb\ccc\

#linux下的路径配置
#ImagesFilePath: /usr/local/images/

这里需要注意的是Win系统是右斜杠 \

Linux系统是左斜杠 /