SpringBoot重寫addResourceHandlers映射文件路徑方式

重寫addResourceHandlers映射文件路徑

在看一個博客源碼發現頁面的圖片所映射的地址在SpringBoot靜態資源文件夾下找不到原來在這裡是通過下面這段代碼,將/store/**地址映射為getStorePath()得到的地址

在此記錄以下

registry.addResourceHandler("/store/**").addResourceLocations(getStorePath());
@Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/dist/**").addResourceLocations("classpath:/static/dist/");
        registry.addResourceHandler("/theme/**").addResourceLocations("classpath:/static/theme/");
        registry.addResourceHandler("/store/**").addResourceLocations(getStorePath());
        super.addResourceHandlers(registry);
    }

配置本地資源映射路徑 addResourceHandlers

實現 WebMvcConfigurer,重寫addResourceHandlers(ResourceHandlerRegistry registry)方法

  • addResourceHandler():添加的是訪問路徑
  • addResourceLocations():添加的是映射後的真實路徑,映射的真實路徑末尾必須加 / ,不然映射不到,這個問題困擾瞭我半天, / 適用於 windows和linux

如下:

package cn.mindgd.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/**
 * 攔截器配置
 */
@Configuration
public class InterceptorConfig implements WebMvcConfigurer {
    /**
     * @author: JiaXinMa
     * @description: 訪問靜態文件
     * @date: 2021/4/15
     */
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        //訪問路徑
        registry.addResourceHandler("/api/upload/**")
                //映射真實路徑
                .addResourceLocations("file:" + System.getProperty("user.dir") + "/");//必須加"/",不然映射不到  
    }
}

System.getProperty(“user.dir”) 是當前項目路徑

成功訪問如下

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: