javascript
SpringBoot之静态资源访问
SpringBoot之靜態資源訪問
1.springboot訪問靜態資源的幾種方式
(1)在src/main/resources/目錄下創建
static文件夾
(2)在src/main/resources/目錄下創建
resources文件夾
(3)在src/main/resources/目錄下創建
public文件夾
(4)在src/main/resources/目錄下創建
META-INF/resources文件夾
目錄結構圖:
訪問方式:
不知道大家看到這里有沒有注意我的目錄結構在4個文件夾中我們都擁有相同名字的6.jpg圖片,那么在springboot在這種特殊的情況訪問的順序是怎樣的呢,優先級順序/META-INF/resources>resources>static>public,感興趣的可以自己試一下
看到這里我們會不會有一個疑問難道在springboot中我們想訪問靜態資源的時候必須以springboot創建指定名稱文件夾來訪問么,當然不是,下面向大家分享一個自定義文件夾訪問靜態資源的方式
(1):首先創建一個java類
創建一個java類繼承WebMvcConfigurerAdapter類并且重寫addResourceHandlers方法,參數引用ResourceHandlerRegistry類這個對象調用addResourceHandler以及addResourceLocations方法,從倆個方法名我們不難看出前者是提供資源訪問路徑而后者是本地項目路徑,那到底是什么意思呢?下面舉例說明一下:
從上面倆張圖片大家可以看出本地項目目錄對應的就是addResourceLocations這個方法中傳遞的url參數,addResourceHandler方法就是資源訪問url,在我們訪問test/4.jpg時springboot會為我們在本地項目中找到testpicture這個文件夾中的4.jpg
看完自定義訪問靜態資源不知道大家有沒有猜到為什么springboot可以訪問/META-INF/resources,resources,static,public這4個文件夾下的靜態資源,并且直接訪問圖片名稱即可。下面我們來看一下springboot中的源碼:
(1)打開WebMvcAutoConfiguration類找到addResourceHandlers方法:
從圖中我們可以看到首先將變量staticPathPattern賦值然后將獲取的值賦給資源訪問路徑方法,下面我們看一下staticPathPattern的值為什么
(2)打開WebMvcProperties類我們可以找到以下代碼:
從圖中我們可以看到值為/**這也就解釋了為什么springboot在訪問靜態資源的時候只訪問資源啊名稱即可。
(3)下面我們繼續查看WebMvcAutoConfiguration類:
(4)打開ResourceProperties類我們可以看到以下倆段代碼:
在CLASSPATH_RESOURCE_LOCATIONS[] 這個數組中我們可以看到
“classpath:/META-INF/resources/”, “classpath:/resources/”, “classpath:/static/”, “classpath:/public/”這4個屬性,這就解釋了為什么springboot可以直接訪問1./META-INF/resources 2.resources 3.static 4.public這4個文件夾下的靜態資源
總結
以上是生活随笔為你收集整理的SpringBoot之静态资源访问的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql change index_M
- 下一篇: 手把手教你安装IAR