這個說法是 正確的。
Spring Boot 對許多常用依賴進行了版本管理,因此在項目中引入這些依賴時,通常不需要指定版本號。
Spring Boot 依賴版本管理 🛠?
spring-boot-starter-parent
:當你的項目在pom.xml
(Maven 項目) 中繼承自spring-boot-starter-parent
時,會帶來諸多便利。其中一個關鍵好處是這個父 POM 包含了一個<dependencyManagement>
部分。該部分預定義了大量與 Spring Boot 常用的第三方庫的版本號(例如 Spring Data、Spring Security、Jackson、Logback、Hibernate 等)。- 通常無需版本號:由于這些版本已由
spring-boot-starter-parent
管理,當添加屬于此受管集合的依賴項(如spring-boot-starter-web
或spring-boot-starter-data-jpa
)時,通常不需要在pom.xml
中指定<version>
標簽。Spring Boot 會自動使用其父 POM 中定義的版本。 - 優點:
- 簡化依賴管理:無需費力尋找各種庫的兼容版本。
- 減少版本沖突:Spring Boot 確保其管理的依賴項都經過測試并能良好協作,從而降低版本沖突的可能性。
- 易于升級:升級 Spring Boot (通過更改父 POM 版本) 通常也會將許多傳遞性依賴升級到兼容的新版本。
- 覆蓋受管版本:如果需要使用與 Spring Boot 管理版本不同的依賴版本,仍然可以通過在項目的
pom.xml
的<dependencies>
部分顯式指定<version>
標簽,或者在自己的<dependencyManagement>
部分(在 Spring Boot 的之前)添加條目來實現。這將覆蓋spring-boot-starter-parent
提供的版本。 - 導入
spring-boot-dependencies
(不使用父 POM):如果不能或不想繼承自spring-boot-starter-parent
(例如,項目已有其他父 POM),仍然可以通過在<dependencyManagement>
部分以scope
為import
的方式導入spring-boot-dependencies
POM 來利用 Spring Boot 的受管依賴:
這可以在不更改項目父 POM 的情況下實現類似的版本管理效果。<dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>3.x.x</version> <type>pom</type><scope>import</scope></dependency></dependencies> </dependencyManagement>
- 啟動器 (Starters):Spring Boot 啟動器(例如
spring-boot-starter-web
、spring-boot-starter-thymeleaf
)本身也是依賴項,如果使用了父 POM,它們通常也不需要版本標簽。它們捆綁了一組與特定功能相關的、經過精心挑選的依賴項,其版本也同樣受到管理。
總而言之,Spring Boot 通過其父 POM 或 spring-boot-dependencies
制品提供了一套經過精心策劃的兼容依賴版本,極大地簡化了依賴管理。這意味著開發者在引入常用庫時通常無需指定版本,從而使構建文件更簡潔,并減少了與版本相關的問題。