1. 程式人生 > >深入Spring Boot (七):靜態資源使用詳解

深入Spring Boot (七):靜態資源使用詳解

Web應用經常需要使用大量的靜態資源,如圖片、css、js等,Spring Boot對這些靜態資源的使用提供了預設配置。本篇將詳細介紹如何使用預設配置和如何修改這些預設配置,主要包含以下5部分內容:
1.靜態資源儲存路徑;
2.靜態資源訪問路徑;
3.最佳實踐;
4.應用歡迎頁;
5.應用圖示。

1.靜態資源儲存路徑

預設配置下,使用Spring Boot可以將靜態資源儲存在/static或/public或/resources或/META-INF/resources目錄下,這四個目錄的根目錄都是classpath,具體在IDEA中位置如下圖所示。
這裡寫圖片描述
上面的四個位置是Spring Boot讀取靜態資源的預設位置,使用spring.resources.static-locations屬性配置這四個位置,檢視Spring Boot原始碼可以驗證,具體程式碼如下所示。
這裡寫圖片描述


當然也可以修改這個配置配置,通過在application.properties中配置spring.resources.static-locations屬性,屬性值即是自定義的靜態資源位置,例如自定義靜態資源目錄是classpath下的statics,具體配置如下:
spring.resources.static-locations=classpath:/statics
配置自定義靜態資源儲存目錄後,預設的儲存位置將不再生效。這個屬性同樣也可以配置在application.yml中。

2.靜態資源訪問路徑

預設配置下,可以通過/xxx訪問靜態資源,例如在/META-INF/resources目錄下有boot.png,使用預設8080埠啟動應用後可以通過

http://localhost:8080/boot.png訪問這個圖片。這個預設配置是通過spring.mvc.static-path-pattern屬性配置,檢視原始碼可以驗證,具體程式碼如下圖所示。
這裡寫圖片描述
同樣,這個預設訪問路徑也可以自定義,通過在application.properties中配置spring.mvc.static-path-pattern屬性,屬性值即是靜態資源訪問路徑字首,例如自定義訪問路徑字首是/image/,具體配置如下:

spring.mvc.static-path-pattern=/image/**

配置自定義靜態資源訪問路徑後,預設的訪問路徑將不再生效。這個屬性同樣也可以配置在application.yml中。

3.最佳實踐

如果你的應用程式被打包成一個jar,不要使用src/main/webapp目錄。雖然這個目錄是一個通用的標準,但是它只適用於war包,如果您生成一個jar,它會被大多數的構建工具默默的忽略。所以,建議不要使用webapp目錄結構。

4.應用歡迎頁

還記得Web應用啟動後的預設歡迎頁index.html嗎?Spring Boot支援靜態歡迎頁和模板歡迎頁,應用啟動會到/static或/public或/resources或/META-INF/resources目錄下尋找index.html,如果自定義了靜態資源儲存路徑,那麼就到自定義路徑下尋找index.html。對這個index.html進行訪問的時候,預設使用/index.html可以訪問,如果自定義了靜態資源訪問路徑,那麼就需要使用自定義靜態資源訪問路徑,例如/image/index.html。如果找不到index.html,將搜尋index的模板檔案,如果找到了,它將自動用作應用程式的歡迎頁面。

5.應用圖示

使用瀏覽器訪問Web服務的時候,網頁標籤的左上角會顯示應用圖示,這個圖示的名稱是favicon.ico,如果沒有修改預設靜態資源儲存路徑,那麼它可以存放在/static或/public或/resources或/META-INF/resources目錄下,如果修改了,就需要存到自定義路徑下。