這是我的《學透Spring Boot》專欄的第17篇文章,了解更多內容請移步我的專欄:
Postnull CSDN 學透 Spring Boot
目錄
靜態文件
靜態文件的默認位置
通過配置文件配置路徑
通過代碼配置路徑
靜態文件的自動配置
總結
靜態文件
以前的傳統MVC的項目,我們會使用JSP作為視圖,這就是動態文件,這些JSP長得像HTML,其實最終會轉換成一個Java類,通過out.print將響應動態的打印出來。
另外,我們有些文件是靜態文件,比如圖片、js等等,我們希望能夠直接訪問。
默認的,Spring boot會從一些默認的路徑加載這些靜態文件。
今天我們來學習一下如何訪問靜態文件。
靜態文件的默認位置
Spring Boot 自動配置了靜態資源的處理,默認會掃描一些特定目錄中的靜態文件。這些目錄是:
- /static
- /public
- /META-INF/resources
這四個目錄中的文件會被自動加載并可以通過 HTTP 訪問。如果你將靜態文件放入這些目錄中,Spring Boot 會自動處理它們,無需額外配置。
我們就可以通過URL訪問這個文件:
localhost:8080/a.html
localhost:8080/d.html
測試發現,static目錄和public目錄既可以放在根目錄下,也可以放在src/main/resources下。
但是如果在一個目錄下既有static也有public,只會加載public文件夾!
通過配置文件配置路徑
有時候,我們不想使用默認的路徑,而是想自定義路徑(閑得蛋疼)
我們可以覆蓋Spring的配置即可(約定大約配置)
比如我們想從下面兩個目錄加載靜態文件。
我們可以通過配置文件
能夠直接訪問
通過代碼配置路徑
除了application.properties配置,我們還可以通過Java代碼的方式配置靜態文件的路徑。
這個MVC配置器,我們已經配置了很多次了!!!!
可以說是Spring MVC自定義配置的地方。用來覆蓋默認的配置。
靜態文件的自動配置
我們還想看看SpringBoot怎么自動配置的。
我們直接看Spring MVC的自動配置類 ,WebMvcAutoConfiguration
這個類也是老演員了。
這個類會去配置資源處理器。
重點看
可以看到多個默認的靜態文件路徑:
- "classpath:/META-INF/resources/"
- ?"classpath:/resources/"
- "classpath:/static/"
- "classpath:/public/"?
總結
本文我們學習了Spring Boot的靜態文件默認路徑,還修改了默認路徑,最后我們還通過源碼,理解了Spring Boot對靜態文件的自動配置。