Springboot項目由JDK8升級至JDK17詳細教程
1. 前言
最近一直想把我的開源項目maple-boot升級到jdk17版本,然后接入Spring AI。拖延癥犯了一直拖拖拖,最近時間空閑較多,開始陸續(xù)著手升級。
整個升級過程 計劃分為3步。
- step1:先將項目升級到jdk17,使用正常
- step2:生成代碼的模板類升級到Jdk17對應的版本
- step3:功能陸續(xù)驗證
本文主要記錄step1將項目升級過程中牽扯到依賴變動升級,當然項目用到的依賴并不算多,項目之外的這里不做記錄。
2. 準備環(huán)境
原項目版本:Jdk8 + springboot 2.7.12
升級后版本:Jdk17 + springboot 3.3.9
這里新建一個maple-boot-17的項目,然后將maple-boot下[base-manage]分支的代碼原封不動的復制進來。
接下來開始修改。
3. 版本升級
3.1 基礎依賴升級
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),這里暫時沒有做進一步深究
4. 功能測試
大體試了下,功能都還健在,后續(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版本對應
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版本對應
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詳細教程的文章就介紹到這了,更多相關(guān)Springboot JDK版本升級內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用webservice自定義注解處理參數(shù)加解密問題
這篇文章主要介紹了使用webservice自定義注解處理參數(shù)加解密問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12Spring MVC 基于URL的映射規(guī)則(注解版)
這篇文章主要介紹了Spring MVC 基于URL的映射規(guī)則(注解版) ,詳細的介紹了幾種方式,有興趣的可以了解一下2017-05-05Flask接口如何返回JSON格式數(shù)據(jù)自動解析
這篇文章主要介紹了Flask接口如何返回JSON格式數(shù)據(jù)自動解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-11-11Java實現(xiàn)Html轉(zhuǎn)Pdf的方法
這篇文章主要介紹了Java實現(xiàn)Html轉(zhuǎn)Pdf的方法,實例分析了java基于ITextRenderer類操作頁面及系統(tǒng)自帶字體生成pdf文件的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-07-07