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