Spring Boot靜態資源訪問順序

在 Spring Boot 中,staticpublic 目錄都用于存放靜態資源(如 HTML、CSS、JavaScript、圖片等文件),但它們在使用上有一些細微的區別。以下是它們的詳細對比:


1. 默認優先級

Spring Boot 會按照以下優先級加載靜態資源:

  1. classpath:/META-INF/resources/
  2. classpath:/resources/
  3. classpath:/static/
  4. classpath:/public/

如果多個目錄中存在同名文件,Spring Boot 會優先加載優先級更高的目錄中的文件。


2. 使用場景

static 目錄
  • 推薦用途:存放前端靜態資源(如 HTML、CSS、JS 文件)。
  • 特點
    • 是 Spring Boot 默認的靜態資源目錄之一。
    • 適合存放與前端相關的靜態文件。
    • 優先級高于 public 目錄。
public 目錄
  • 推薦用途:存放公共資源(如圖片、字體、下載文件等)。
  • 特點
    • 是 Spring Boot 默認的靜態資源目錄之一。
    • 適合存放不常變動或通用的靜態資源。
    • 優先級低于 static 目錄。

3. 示例

假設項目結構如下:

src/main/resources/
├── static/
│   └── index.html
└── public/└── images/└── logo.png
訪問方式
  • index.html 的訪問 URL:http://localhost:8080/index.html
  • logo.png 的訪問 URL:http://localhost:8080/images/logo.png

4. 自定義靜態資源路徑

如果需要自定義靜態資源路徑,可以在 application.propertiesapplication.yml 中配置:

application.properties
spring.web.resources.static-locations=classpath:/custom-static/
application.yml
spring:web:resources:static-locations: classpath:/custom-static/

配置后,Spring Boot 會從 custom-static 目錄加載靜態資源,而不是默認的 staticpublic 目錄。


5. 總結

特性static 目錄public 目錄
優先級較高較低
推薦用途前端靜態資源(HTML、CSS、JS)公共資源(圖片、字體、下載文件)
默認路徑classpath:/static/classpath:/public/
訪問方式http://localhost:8080/filenamehttp://localhost:8080/filename

選擇建議

  • 如果項目主要是前端應用,推薦將靜態資源放在 static 目錄。
  • 如果需要存放通用的公共資源(如圖片、字體等),可以放在 public 目錄。
  • 如果需要更靈活的管理,可以通過配置自定義靜態資源路徑。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/72735.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/72735.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/72735.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

windows 平臺如何點擊網頁上的url ,會打開遠程桌面連接服務器

你可以使用自定義協議方案(Protocol Scheme)實現網頁上點擊URL后自動啟動遠程桌面連接(mstsc),參考你提供的C代碼思路,如下實現: 第一步:注冊自定義協議 使用類似openmstsc://協議…

UniApp 運行的微信小程序如何進行深度優化

UniApp 運行的微信小程序如何進行深度優化 目錄 引言性能優化 1. 減少包體積2. 優化頁面加載速度3. 減少 setData 調用4. 使用分包加載 代碼優化 1. 減少不必要的代碼2. 使用條件編譯3. 優化圖片資源 用戶體驗優化 1. 優化交互體驗2. 預加載數據3. 使用骨架屏 調試與監控 1. …

ESP32S3N16R8驅動ST7701S屏幕(vscode+PlatfoemIO)

1.開發板配置 本人開發板使用ESP32S3-wroom1-n16r8最小系統板 由于基于vscode與PlatformIO框架開發,無espidf框架,因此無法直接燒錄程序,配置開發板參數如下: 在platformio.ini文件中,配置使用esp32-s3-devkitc-1開發…

ASP.NET 微服務網關 Ocelot+Consul+Skywalking

ASP.NET 微服務網關 OcelotConsulSkywalking APIGateWaySample簡介網關相關技術核心其它 請求處理流程環境搭建代碼運行效果圖 APIGateWaySample Ocelot Consul Skywalking 簡介 系統設計圖 網關 API網關(Gateway)是一個服務器,是系統…

頻譜分析儀的使用

頻譜分析儀設置帶寬的方式: 可以利用同軸線纜來制作近場探頭: 區別dB和dBm兩個單位: 無線電波的發射功率是指在給定頻段范圍內的能量,通常有兩種衡量 或測量標準:   1、功率(W):相…

【數據分析】轉錄組基因表達的KEGG通路富集分析教程

禁止商業或二改轉載,僅供自學使用,侵權必究,如需截取部分內容請后臺聯系作者! 文章目錄 介紹差異分析(limma)KEGG富集分析(enrichKEGG)可視化加載R包數據下載導入數據基因差異分析火山圖KEGG通路富集分析可視化通路結果另一個案例總結系統信息參考介紹 KEGG富集分析,可…

關于sqlalchemy的使用

關于sqlalchemy的使用 說明一、sqlachemy總體使用思路二、安裝與創建庫、連結庫三、創建表、增加數據四、查詢記錄五、更新或刪除六、關聯表定義 說明 本教程所需軟件及庫python3.10、sqlalchemy安裝與創建庫、連結庫創建表、增加數據查詢記錄 一、sqlachemy總體使用思路 在…

在 IntelliJ IDEA 中使用 JUnit 進行單元測試

1. 介紹 JUnit JUnit 是 Java 語言中最流行的單元測試框架之一。它基于 xUnit 設計模式,支持 測試自動化、斷言(Assertions)和測試生命周期管理,是 Java 開發中進行 TDD(測試驅動開發) 的重要工具。 JUni…

單片機的發展

一、引言 單片機自誕生以來,經歷了四十多年的風風雨雨,從最初的工業控制逐步擴展到家電、通信、智能家居等各個領域。其發展過程就像是一場精彩的冒險,每一次技術的革新都像是在未知的海域中開辟新的航線。 二、單片機的發展歷程 &#xff…

常見的博弈模型有哪些

常見的博弈模型有哪些 目錄 常見的博弈模型有哪些**1. 重復博弈(Repeated Game)****2. 進化博弈論(Evolutionary Game Theory)****3. 機制設計(Mechanism Design)****4. 微分博弈(Differential Game)****5. 貝葉斯博弈(Bayesian Game)****6. 合作博弈(Cooperative G…

【MySQL-數據類型】數據類型分類+數值類型+文本、二進制類型+String類型

一、數據類型分類 二、數值類型 1.bit類型 測試環境ubuntu 基本語法: bit[(M)]:位字段類型,M表示每個值的位數,范圍從1~64;如果M被忽略,默認為1舉例: create table testBit(id i…

golang從入門到做牛馬:第一篇-我與golang的緣分,go語言簡介

還記得2018年的夏天,剛畢業的我不知道該做些什么,于是自學了一周的go語言,想要找一份go語言工作的代碼,當時的go還沒有go mod來管理依賴包,在北京找了一個月的工作,找到了一個小公司做了后端開發,當然使用go語言開發,帶著興奮勁,年輕身體也好,邊努力學習,邊工作。 時…

【數據庫】MySQL常見聚合查詢詳解

在數據庫操作中,聚合查詢是非常重要的一部分。通過聚合查詢,我們可以對數據進行匯總、統計和分析。MySQL提供了豐富的聚合函數來滿足不同的需求。本文將詳細介紹MySQL中常見的40個聚合函數及其使用場景,并通過8個的案例展示它們的用法。 一、…

調研:如何實現智能分析助手(Agent)(AutoCoder、FastGPT、AutoGen、DataCopilot)

文章目錄 調研:如何實現智能分析助手(Agent)(AutoCoder、FastGPT、AutoGen、DataCopilot)一、交互流程二、數據流程三、架構分類四、開源產品4.1 AutoCoder(知識庫變體)4.2 FastGPT(…

【Vue CLI腳手架開發】——6.scoped樣式

文章目錄 一、scoped是什么二、應用案例1.使用代碼2.原理3父組件App未添加scoped影響 一、scoped是什么 我們知道vue為了防止css樣式污染&#xff0c;在每個組件中提供了 scoped屬性進行限定css作用域&#xff1b;當<style>標簽有 scoped 屬性時&#xff0c;它的 CSS 只…

高精算法的用法及其優勢

高精度問題是指當數據的位數非常大&#xff08;超出標準數據類型的范圍&#xff09;時&#xff0c;如何進行計算和存儲的問題。常見場景包括大整數的加、減、乘、除、取模等操作。以下是解決高精度問題的常用方法與技巧&#xff1a; 一、數據存儲 數組存儲 用整型數組存儲&am…

VM+CentOS虛擬機

關于VMCentOS虛擬機的配置和使用&#xff0c;可以參考以下博客中的詳細教程&#xff1a; **一、VMCentOS虛擬機配置** 1. **虛擬機網絡配置** - 在VMware中&#xff0c;點擊“編輯”→“虛擬網絡編輯器”&#xff0c;選擇VMnet8并進行相關設置。 - 子網IP可以改成如192.168.1…

設置 CursorRules 規則

為什么要設置CursorRules&#xff1f; 設置 CursorRules 可以幫助優化代碼生成和開發流程&#xff0c;提升工作效率。具體的好處包括&#xff1a; 1、自動化代碼生成 &#xff1a;通過定義規則&#xff0c;Cursor 可以根據你的開發需求自動生成符合規定的代碼模板&#xff0c…

pip install速度太慢的多種解決方案

目錄 問題描述為什么 pip 速度這么慢&#xff1f;解決方案1. 使用國內鏡像源2. 配置多個鏡像源3. 使用第三方工具4. 手動下載后本地安裝5. 優化網絡環境6. 更新 pip 版本 測試效果 問題描述 在使用 Python 進行開發時&#xff0c;我們經常需要使用 pip 來安裝第三方庫。然而&am…

Java阻塞隊列深度解析:高并發場景下的安全衛士

一、阻塞隊列的核心價值 在電商秒殺系統中&#xff0c;瞬時涌入的10萬請求如果直接沖擊數據庫&#xff0c;必然導致系統崩潰。阻塞隊列如同一個智能緩沖帶&#xff0c;通過流量削峰和異步解耦兩大核心能力&#xff0c;成為高并發系統的核心組件。 二、Java阻塞隊列實現類對比 …