35人参与 • 2025-06-11 • Java
最近一直想把我的开源项目maple-boot升级到jdk17版本,然后接入spring ai。拖延症犯了一直拖拖拖,最近时间空闲较多,开始陆续着手升级。
整个升级过程 计划分为3步。
本文主要记录step1将项目升级过程中牵扯到依赖变动升级,当然项目用到的依赖并不算多,项目之外的这里不做记录。
原项目版本:jdk8 + springboot 2.7.12
升级后版本:jdk17 + springboot 3.3.9
这里新建一个maple-boot-17的项目,然后将maple-boot下[base-manage]分支的代码原封不动的复制进来。
接下来开始修改。
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
1.redis相关
yml文件配置由spring.redis 变为spring.data.redis,多了一级data

2.mybatis plus相关
artifactid由mybatis-plus-boot-starter变为mybatis-plus-spring-boot3-startercom.baomidou:mybatis-plus-jsqlparserartifactid由dynamic-datasource-spring-boot-starter变为dynamic-datasource-spring-boot3-starter3.对象转化工具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参数”) | @tag(name = “body参数”) |
| @apioperation(“普通body请求”) | @operation(summary = “普通body请求”) |
| @apimodel(value = “对象描述”) | @schema(description = “对象描述”) |
| @apimodelproperty(“参数名称”) | @schema(description = “参数名称”) |
更多的变动可以参考官网,这里暂时没有做进一步深究

大体试了下,功能都还健在,后续整理生成工具时,会陆续测试功能细节。

本次项目版本依赖升级大致如下,可能有一些没有记录到。
| 依赖 | 升级前 | 升级后 |
|---|---|---|
| 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 |
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作为构建工具,与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版的使用起来也更丝滑…
升级过程中,程序可能会出现各种各式报错,牵扯到相关依赖版本变更需要调整。
到此这篇关于springboot项目由jdk8升级至jdk17详细教程的文章就介绍到这了,更多相关springboot jdk版本升级内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论