SpringBoot開發案例之配置靜態資源文件路徑

  • 2019 年 12 月 9 日
  • 筆記

前言

SpringBoot本質上是為微服務而生的,以JAR的形式啟動運行,但是有時候靜態資源的訪問是必不可少的,比如:image、js、css 等資源的訪問。

默認靜態資源路徑

Spring Boot 對靜態資源映射提供了默認配置,靜態資源路徑都是在classpath中:

classpath:/static  classpath:/public  classpath:/resources  classpath:/META-INF/resources

我們在src/main/resources目錄下新建 public、resources、static 三個目錄,並分別放入 1.jpg 2.jpg 3.jpg 三張圖片。然後通過瀏覽器分別訪問:

http://localhost:8080/1.jpg  http://localhost:8080/2.jpg  http://localhost:8080/3.jpg

地址均可以正常訪問,Spring Boot 默認會從 public resources static 三個目錄裡面查找是否存在相應的資源。

新增靜態資源路徑

我們在spring.resources.static-locations後面追加一個配置classpath:/itstyle/:

# 靜態文件請求匹配方式  spring.mvc.static-path-pattern=/**  # 修改默認的靜態定址資源目錄 多個使用逗號分隔  spring.resources.static-locations = classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/,classpath:/itstyle/

自定義靜態資源映射

在實際開發中,我們可能需要自定義靜態資源訪問以及上傳路徑,特別是文件上傳,不可能上傳的運行的JAR服務中,那麼可以通過繼承WebMvcConfigurerAdapter來實現自定義路徑映射。

application.properties 文件配置:

# 圖片音頻上傳路徑配置(win系統自行變更本地路徑)  web.upload.path=/home/file/

WechatApplication.java 啟動配置:

/**   * 語音測評後台服務   * 創建者 柒   * 創建時間    2018年3月8日   */  @SpringBootApplication  public class WechatApplication extends WebMvcConfigurerAdapter  {        private final static Logger LOGGER = LoggerFactory.getLogger(WechatApplication.class);        @Value("${web.upload.path}")      private String uploadPath;        @Override      public void addResourceHandlers(ResourceHandlerRegistry registry) {          super.addResourceHandlers(registry);          registry.addResourceHandler("/uploads/**").addResourceLocations(                  "file:"+uploadPath);          LOGGER.info("自定義靜態資源目錄、此處功能用於文件映射");      }        public static void main(String[] args) {          SpringApplication.run(WechatApplication.class);          LOGGER.info("語音測評後台服務啟動成功");      }    }

我們可以訪問以下路徑:

http://localhost:8080/uploads/1.jpg