摘要: 前言 SpringBoot本質上是爲微服務而生的,以JAR的形式啓動運行,但是有時候靜態資源的訪問是必不可少的,比如:image、js、css 等資源的訪問。 默認靜態資源路徑 Spring Boot 對靜態資源映射提供了默認配置,靜態資源路徑都是在classpath中: classpath:/..
前言
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("語音測評後臺服務啓動成功");
}
}
第二種方式:在application.properties配置
在application.properties中添加配置:
# 靜態文件請求匹配方式
spring.mvc.static-path-pattern=/upload/**
# 修改默認的靜態尋址資源目錄 多個使用逗號分隔
#spring.resources.static-locations = classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/,classpath:/itstyle/
spring.resources.static-locations=file:${web.upload-path},file:${web.front-path}
注意:通過spring.mvc.static-path-pattern這種方式配置,會使Spring Boot的默認配置失效,也就是說,/public , /resources 等默認配置不能使用。
配置中配置了靜態模式爲/upload/**,訪問時候就只能通過/upload/xx 來訪問。
我們現在可以訪問以下路徑:
http://localhost:8080/uploads/1.jpg