当前位置: 代码网 > it编程>编程语言>Java > Springboot项目由JDK8升级至JDK17详细教程

Springboot项目由JDK8升级至JDK17详细教程

2025年06月11日 Java 我要评论
1. 前言最近一直想把我的开源项目maple-boot升级到jdk17版本,然后接入spring ai。拖延症犯了一直拖拖拖,最近时间空闲较多,开始陆续着手升级。整个升级过程 计划分为3步。step1

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.sourcemaven.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文件配置由spring.redis 变为spring.data.redis,多了一级data

2.mybatis plus相关

  • mybatis plus版本升级,由3.5.2升级到3.5.9,pom依赖artifactidmybatis-plus-boot-starter变为mybatis-plus-spring-boot3-starter
  • 分页插件剥离,新增分页依赖com.baomidou:mybatis-plus-jsqlparser
  • 多数据源依赖升级,由3.5.2升级为4.0.0,pom依赖artifactiddynamic-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.0knife4jconfiguration配置类变更

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. 升级总结

本次项目版本依赖升级大致如下,可能有一些没有记录到。

依赖升级前升级后
jdk817
springboot2.7.123.3.9
mybatis plus3.5.23.5.9
dynamic datasource3.5.24.0.0
lombok1.16.181.18.30
nacos0.2.102.2.3
knife4j2.0.74.0.0
httpclient4.5.134.5.14
dozer6.2.07.0.0

6. 注意事项

1.jdk版本与spring boot版本对应

spring boot不同版本支持的jdk版本如下:

spring boot版本支持的jdk版本
spring boot 2.1.xjdk 8、jdk 11
spring boot 2.2.xjdk 8、jdk 11
spring boot 2.3.xjdk 8、jdk 11
spring boot 2.4.xjdk 8、jdk 11
spring boot 2.5.xjdk 8、jdk 11
spring boot 2.6.xjdk 8、jdk 11
spring boot 2.7.xjdk 11、jdk 17
spring boot 3.0.xjdk 17(基于spring framework 6)

2.maven版本与spring boot版本对应

maven作为构建工具,与spring boot的兼容性如下:

spring boot版本推荐的maven版本
spring boot 2.1.xmaven 3.5.x
spring boot 2.2.xmaven 3.5.x、3.6.x
spring boot 2.3.xmaven 3.6.x
spring boot 2.4.xmaven 3.6.x
spring boot 2.5.xmaven 3.6.x
spring boot 2.6.xmaven 3.6.x
spring boot 2.7.xmaven 3.6.x、3.8.x
spring boot 3.0.xmaven 3.8.x

3.我用的idea 2021.3款的,不支持过高的maven版本,我这里使用的是maven 3.8.1。条件允许建议可以换更高版本的idea,感觉2024版的使用起来也更丝滑…

7.小结

升级过程中,程序可能会出现各种各式报错,牵扯到相关依赖版本变更需要调整。

到此这篇关于springboot项目由jdk8升级至jdk17详细教程的文章就介绍到这了,更多相关springboot jdk版本升级内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com