1. 前言
最近一直想把我的開源項目maple-boot升級到jdk17版本,然后接入Spring AI。拖延癥犯了一直拖拖拖,最近時間空閑較多,開始陸續著手升級。
整個升級過程 計劃分為3步。
- step1:先將項目升級到jdk17,使用正常
- step2:生成代碼的模板類升級到Jdk17對應的版本
- step3:功能陸續驗證
本文主要記錄step1將項目升級過程中牽扯到依賴變動升級,當然項目用到的依賴并不算多,項目之外的這里不做記錄。
2. 準備環境
原項目版本:Jdk8 + springboot 2.7.12
升級后版本:Jdk17 + springboot 3.3.9
這里新建一個maple-boot-17的項目,然后將maple-boot下[base-manage]分支的代碼原封不動的復制進來。
接下來開始修改。
3. 版本升級
3.1 基礎依賴升級
- 首先把項目環境切換到Jdk17上
- 父級pom文件中
spring-boot-starter-parent
版本升級到3.3.9
-
項目配置中的
java.version
由8升級到17 -
maven編譯相關
maven.compiler.source
、maven.compiler.target
由8升到17 -
由于在jdk17中移除了javax的部分包,所以很多javax.xxx都需要修改jakarta.xxx
這里主要包含:
(1) javax.servlet
(2) javax.annotation
其它javax.net,javax.sql等則繼續保留著。
-
lombok版本由1.16.18 升級 1.18.30
3.2 相關組件升級
- redis相關
? yml文件配置由spring.redis
變為spring.data.redis
,多了一級data
- mybatis plus相關
- mybatis plus版本升級,由3.5.2升級到3.5.9,pom依賴
artifactId
由mybatis-plus-boot-starter
變為mybatis-plus-spring-boot3-starter
- 分頁插件剝離,新增分頁依賴
com.baomidou:mybatis-plus-jsqlparser
- 多數據源依賴升級,由3.5.2升級為4.0.0,pom依賴
artifactId
由dynamic-datasource-spring-boot-starter
變為dynamic-datasource-spring-boot3-starter
- TODO:生成工具暫未調整,不確定是否有變化
-
對象轉化工具dozer版本升級,由6.2.0升級至7.0.0
-
httpclient版本升級,升級至4.5.14
-
接口文檔knife4j升級
由
com.github.xiaoymin:knife4j-spring-boot-starter:2.0.7
變更為com.github.xiaoymin:knife4j-openapi3-jakarta-spring-boot-starter:4.0.0
,Knife4jConfiguration
配置類變更
package com.maple.rest.config;import io.swagger.v3.oas.annotations.OpenAPIDefinition;
import io.swagger.v3.oas.annotations.info.Info;
import io.swagger.v3.oas.annotations.servers.Server;
import org.springframework.context.annotation.Configuration;/*** @author 笑小楓-https://www.xiaoxiaofeng.com* @date 2022/6/28*/
@Configuration
@OpenAPIDefinition(info = @Info(title = "笑小楓管理平臺接口",description = "管理平臺 API 文檔",version = "1.0"),servers = @Server(url = "https://www.xiaoxiaofeng.site/api/")
)
public class Knife4jConfiguration {}
注解變更
變更前 | 變更后 |
---|---|
@Api(tags = “body參數”) | @Tag(name = “body參數”) |
@ApiOperation(“普通body請求”) | @Operation(summary = “普通body請求”) |
@ApiModel(value = “對象描述”) | @Schema(description = “對象描述”) |
@ApiModelProperty(“參數名稱”) | @Schema(description = “參數名稱”) |
更多的變動可以參考官網,這里暫時沒有做進一步深究
4. 功能測試
大體試了下,功能都還健在,后續整理生成工具時,會陸續測試功能細節。
5. 升級總結
本次項目版本依賴升級大致如下,可能有一些沒有記錄到。
依賴 | 升級前 | 升級后 |
---|---|---|
JDK | 8 | 17 |
springboot | 2.7.12 | 3.3.9 |
mybatis plus | 3.5.2 | 3.5.9 |
dynamic datasource | 3.5.2 | 4.0.0 |
lombok | 1.16.18 | 1.18.30 |
nacos | 0.2.10 | 2.2.3 |
knife4j | 2.0.7 | 4.0.0 |
httpclient | 4.5.13 | 4.5.14 |
dozer | 6.2.0 | 7.0.0 |
6. 注意事項
- JDK版本與Spring Boot版本對應
Spring Boot不同版本支持的JDK版本如下:
Spring Boot版本 | 支持的JDK版本 |
---|---|
Spring Boot 2.1.x | JDK 8、JDK 11 |
Spring Boot 2.2.x | JDK 8、JDK 11 |
Spring Boot 2.3.x | JDK 8、JDK 11 |
Spring Boot 2.4.x | JDK 8、JDK 11 |
Spring Boot 2.5.x | JDK 8、JDK 11 |
Spring Boot 2.6.x | JDK 8、JDK 11 |
Spring Boot 2.7.x | JDK 11、JDK 17 |
Spring Boot 3.0.x | JDK 17(基于Spring Framework 6) |
- Maven版本與Spring Boot版本對應
Maven作為構建工具,與Spring Boot的兼容性如下:
Spring Boot版本 | 推薦的Maven版本 |
---|---|
Spring Boot 2.1.x | Maven 3.5.x |
Spring Boot 2.2.x | Maven 3.5.x、3.6.x |
Spring Boot 2.3.x | Maven 3.6.x |
Spring Boot 2.4.x | Maven 3.6.x |
Spring Boot 2.5.x | Maven 3.6.x |
Spring Boot 2.6.x | Maven 3.6.x |
Spring Boot 2.7.x | Maven 3.6.x、3.8.x |
Spring Boot 3.0.x | Maven 3.8.x |
- 我用的idea 2021.3款的,不支持過高的maven版本,我這里使用的是maven 3.8.1。條件允許建議可以換更高版本的idea,感覺2024版的使用起來也更絲滑…
7.小結
升級過程中,程序可能會出現各種各式報錯,牽扯到相關依賴版本變更需要調整,本文中沒有出現的可以AI一下,也可以留言給我,后續會整理對應升級方案。
?附上本文調整后的源碼【maple-boot-17】https://gitee.com/hack-feng/maple-boot-17
?jdk8 版本戳這里 -> https://gitee.com/hack-feng/maple-boot