在 Spring Boot 中,static
和 public
目錄都用于存放靜態資源(如 HTML、CSS、JavaScript、圖片等文件),但它們在使用上有一些細微的區別。以下是它們的詳細對比:
1. 默認優先級
Spring Boot 會按照以下優先級加載靜態資源:
classpath:/META-INF/resources/
classpath:/resources/
classpath:/static/
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.properties
或 application.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
目錄加載靜態資源,而不是默認的 static
或 public
目錄。
5. 總結
特性 | static 目錄 | public 目錄 |
---|---|---|
優先級 | 較高 | 較低 |
推薦用途 | 前端靜態資源(HTML、CSS、JS) | 公共資源(圖片、字體、下載文件) |
默認路徑 | classpath:/static/ | classpath:/public/ |
訪問方式 | http://localhost:8080/filename | http://localhost:8080/filename |
選擇建議
- 如果項目主要是前端應用,推薦將靜態資源放在
static
目錄。 - 如果需要存放通用的公共資源(如圖片、字體等),可以放在
public
目錄。 - 如果需要更靈活的管理,可以通過配置自定義靜態資源路徑。