以下是 Spring(以 Spring Boot 為核心)與 JDK、Maven、MyBatis-Plus、Tomcat 的版本對應關系及關鍵注意事項,基于最新技術生態整理:
一、Spring Boot 與 JDK 版本對應
-
Spring Boot 2.x 系列
- 最低要求:JDK 1.8
- 推薦版本:JDK 8/11(官方支持至 2025 年)
- 注意:Spring Boot 2.7.x 是 2.x 的最終版本,建議新項目直接升級至 3.x?
-
Spring Boot 3.x 系列
- 最低要求:JDK 17
- 推薦版本:JDK 17/21(支持 Java 17+ 新特性,如虛擬線程)
- 兼容性:Spring Boot 3.0+ 不再支持 JDK 8,需注意舊項目升級時的適配?
二、Spring Boot 與 MyBatis-Plus 版本對應
-
Spring Boot 2.x + MyBatis-Plus
- 推薦組合:Spring Boot 2.7.x + MyBatis-Plus 3.4.x
- 依賴示例:
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.3.1</version> </dependency>
?
- 注意:避免混用 MyBatis 3.4.x 以下版本,可能導致?
sqlSessionFactory
?配置錯誤?
-
Spring Boot 3.x + MyBatis-Plus
- 強制要求:MyBatis-Plus 3.5.x+(最低 3.5.3.1)
- 依賴示例:
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.5</version> </dependency>
?
- 優化點:支持 Java 17 特性(如 Record 類)和 Spring Boot 3.x 的模塊化配置?
三、Maven 配置與 Spring Boot
- Maven 版本兼容性
- 推薦版本:Maven 3.6.3+(支持 Spring Boot 3.x 的依賴解析)
- 關鍵配置:在?
pom.xml
?中繼承 Spring Boot 父工程以簡化版本管理:<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.2.0</version> </parent>
?
- 依賴沖突處理:使用?
mvn dependency:tree
?檢查沖突,優先通過?<exclusions>
?排除舊版本依賴?
四、內嵌 Tomcat 版本對應
- Spring Boot 默認內嵌 Tomcat 版本
- Spring Boot 2.7.x:Tomcat 9.0.x
- Spring Boot 3.0.x+:Tomcat 10.1.x(支持 Servlet 5.0+)
- 手動指定版本(非必要不推薦):
<properties><tomcat.version>10.1.18</tomcat.version> </properties>
?
- 注意:Tomcat 10+ 的包路徑從?
javax
?改為?jakarta
,需確保依賴庫兼容(如 MyBatis-Plus 3.5.5+)?
五、綜合版本選擇策略
-
新項目推薦組合
- 技術棧:Spring Boot 3.2.x + JDK 17 + MyBatis-Plus 3.5.5 + Tomcat 10.1.x
- 優勢:支持最新 Java 特性、性能優化及長期維護?
-
舊項目升級路徑
- 步驟:
- 升級 JDK 至 17(Spring Boot 3.x 強制要求)
- 升級 Spring Boot 至 3.x,同步調整 MyBatis-Plus 至 3.5.x
- 驗證 Tomcat 兼容性,更新?
javax
?到?jakarta
?命名空間?
?
- 步驟:
六、常見問題與解決方案
-
JDK 版本不兼容報錯
- 示例:
UnsupportedClassVersionError
- 解決:檢查 Maven 編譯配置,確保?
<maven.compiler.source>
?與 JDK 版本一致?
- 示例:
-
MyBatis-Plus 啟動失敗
- 典型錯誤:
Property 'sqlSessionFactory' not found
- 原因:MyBatis-Plus 版本與 Spring Boot 不兼容
- 解決:升級至兼容版本(參考第二節)并清理 Maven 本地倉庫緩存?
- 典型錯誤:
-
Tomcat 10+ 的 Servlet API 變更
- 錯誤:
javax.servlet
?類找不到 - 解決:替換依賴為 Jakarta EE 版本(如?
jakarta.servlet:jakarta.servlet-api:5.0.0
)
- 錯誤:
如需具體版本號或更詳細配置,可參考 Spring Initializr 或各組件官方文檔。
?