Springboot項目由JDK8升級至JDK17詳細(xì)教程
1. 前言
最近一直想把我的開源項目maple-boot升級到j(luò)dk17版本,然后接入Spring AI。拖延癥犯了一直拖拖拖,最近時間空閑較多,開始陸續(xù)著手升級。
整個升級過程 計劃分為3步。
- step1:先將項目升級到j(luò)dk17,使用正常
- step2:生成代碼的模板類升級到Jdk17對應(yīng)的版本
- step3:功能陸續(xù)驗證
本文主要記錄step1將項目升級過程中牽扯到依賴變動升級,當(dāng)然項目用到的依賴并不算多,項目之外的這里不做記錄。
2. 準(zhǔn)備環(huán)境
原項目版本:Jdk8 + springboot 2.7.12
升級后版本:Jdk17 + springboot 3.3.9
這里新建一個maple-boot-17的項目,然后將maple-boot下[base-manage]分支的代碼原封不動的復(fù)制進(jìn)來。
接下來開始修改。
3. 版本升級
3.1 基礎(chǔ)依賴升級
1.首先把項目環(huán)境切換到Jdk17上

2.父級pom文件中spring-boot-starter-parent版本升級到3.3.9

3.項目配置中的java.version由8升級到17
4.maven編譯相關(guān)maven.compiler.source、maven.compiler.target由8升到17
5.由于在jdk17中移除了javax的部分包,所以很多javax.xxx都需要修改jakarta.xxx
這里主要包含:
(1) javax.servlet
(2) javax.annotation
其它javax.net,javax.sql等則繼續(xù)保留著。
6.lombok版本由1.16.18 升級 1.18.30
3.2 相關(guān)組件升級
1.redis相關(guān)
? yml文件配置由spring.redis 變?yōu)?code>spring.data.redis,多了一級data

2.mybatis plus相關(guān)
- mybatis plus版本升級,由3.5.2升級到3.5.9,pom依賴
artifactId由mybatis-plus-boot-starter變?yōu)?code>mybatis-plus-spring-boot3-starter - 分頁插件剝離,新增分頁依賴
com.baomidou:mybatis-plus-jsqlparser - 多數(shù)據(jù)源依賴升級,由3.5.2升級為4.0.0,pom依賴
artifactId由dynamic-datasource-spring-boot-starter變?yōu)?code>dynamic-datasource-spring-boot3-starter - TODO:生成工具暫未調(diào)整,不確定是否有變化
3.對象轉(zhuǎn)化工具dozer版本升級,由6.2.0升級至7.0.0
4.httpclient版本升級,升級至4.5.14
5.接口文檔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參數(shù)”) | @Tag(name = “body參數(shù)”) |
| @ApiOperation(“普通body請求”) | @Operation(summary = “普通body請求”) |
| @ApiModel(value = “對象描述”) | @Schema(description = “對象描述”) |
| @ApiModelProperty(“參數(shù)名稱”) | @Schema(description = “參數(shù)名稱”) |
更多的變動可以參考官網(wǎng),這里暫時沒有做進(jìn)一步深究

4. 功能測試
大體試了下,功能都還健在,后續(xù)整理生成工具時,會陸續(xù)測試功能細(xì)節(jié)。

5. 升級總結(jié)
本次項目版本依賴升級大致如下,可能有一些沒有記錄到。
| 依賴 | 升級前 | 升級后 |
|---|---|---|
| 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. 注意事項
1.JDK版本與Spring Boot版本對應(yīng)
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) |
2.Maven版本與Spring Boot版本對應(yīng)
Maven作為構(gòu)建工具,與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 |
3.我用的idea 2021.3款的,不支持過高的maven版本,我這里使用的是maven 3.8.1。條件允許建議可以換更高版本的idea,感覺2024版的使用起來也更絲滑…
7.小結(jié)
升級過程中,程序可能會出現(xiàn)各種各式報錯,牽扯到相關(guān)依賴版本變更需要調(diào)整。
到此這篇關(guān)于Springboot項目由JDK8升級至JDK17詳細(xì)教程的文章就介紹到這了,更多相關(guān)Springboot JDK版本升級內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java編程實現(xiàn)服務(wù)器端支持?jǐn)帱c(diǎn)續(xù)傳的方法(可支持快車、迅雷)
這篇文章主要介紹了Java編程實現(xiàn)服務(wù)器端支持?jǐn)帱c(diǎn)續(xù)傳的方法,涉及Java文件傳輸?shù)南嚓P(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-11-11
JavaWeb實現(xiàn)Session跨頁面?zhèn)鬟f數(shù)據(jù)
本文主要介紹了 JavaWeb實現(xiàn)Session跨頁面?zhèn)鬟f數(shù)據(jù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07
使用Java將一個List運(yùn)用遞歸轉(zhuǎn)成樹形結(jié)構(gòu)案例
這篇文章主要介紹了使用Java將一個List運(yùn)用遞歸轉(zhuǎn)成樹形結(jié)構(gòu)案例,本文通過詳細(xì)的案例來解釋說明了如何去操作,需要的朋友可以參考下2021-06-06
java實現(xiàn)ip地址與十進(jìn)制數(shù)相互轉(zhuǎn)換
本文介紹在java中IP地址轉(zhuǎn)換十進(jìn)制數(shù)及把10進(jìn)制再轉(zhuǎn)換成IP地址的方法及實例參考,曬出來和大家分享一下2012-12-12

