目录
- 1. 前言
- 2. 准备环境
- 3. 版本升级
- 3.1 基础依赖升级
- 3.2 相关组件升级
- 4. 功能测试
- 5. 升级总结
- 6. 注意事项
- 7.小结
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 基础依赖升级
1.首先把项目环境切换到Jdk17上

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

3.项目配置中的Java.version由8升级到17
4.maven编译相关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等则继续保留着。
6.lombok版本由1.16.18 升级 1.18.30
3.2 相关组件升级
1.Redis相关
yml文YiZEFKCjZm件配置由spring.redis 变为spring.data.redis,多了一级data

2.myBATis plus相关
- mybatis plus版本升级,由3.5.2升级到3.5.9,pom依赖
artifactId由mybatis-plus-boot-starter变为mybatis-plus-spring-boot3-starter - 分页插件剥离,新增分页依赖
com.baomidopythonu:mybatis-plus-jsqlparser - 多数据源依赖升级,由3.5.2升级为4.0.0,pom依赖
artifactId由dynamic-datasource-spring-boot-starter变为dynamic-datasource-spring-boot3-starter - TODO:生成工具暂未调整,不确定是否有变化
3.对象转化工具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 = "笑小枫python管理平台接口",
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. 注意事项
1.JDjsK版本与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作为构建工具,与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,感觉202YiZEFKCjZm4版的使用起来也更丝滑…
7.小结
升级过程中,程序可能会出现各种各式报错,牵扯到相关依赖版本变更需要调整。
到此这篇关于Springboot项目由JDK8升级至JDK17详细教程的文章就介绍到这了,更多相关Springboot JDK版本升级内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!
加载中,请稍侯......
精彩评论