[Java] Spring Boot 3.0 升级 实战踩坑记录

本文记录了作者在升级Spring Boot 3.0过程中遇到的挑战,包括版本信息更新、Java版本升级、Gradle升级、依赖调整、问题排查等。在升级过程中,需要注意Spring Security、Spring Data JPA等组件的变化,并解决gRPC和Jakarta EE的兼容性问题。
摘要由CSDN通过智能技术生成

Spring Boot常用于Java后端开发,于2022年11月24日正式发布了3.0.0版本,带来了全新的特性、升级了依赖版本乃至Java版本,与此同时也弃用或更改了一些旧版本中的写法,导致了需要修改代码或配置文件。
笔者尝鲜去升级了一下Spring Boot 3.0,本篇文章将会简要归纳总结一下笔者在升级的时候需要进行的操作、遇到的问题和解决方案,希望能对各位读者有所帮助。

版本信息

作为参考,笔者升级后各版本信息如下:

  • Spring Boot 3.0.0
  • Spring 6.0.2
  • Spring Security 6.0.0
  • Spring Data JPA 3.0.0
  • Java 17
  • Gradle 7.6

确认依赖

Spring框架的版本可以通过Gradle插件io.spring.dependency-management来进行自动管理,升级Spring Boot版本时会带着Spring框架以及Spring生态全家桶一起升级。
推荐安装依赖Spring Boot Properties Migrator来检查是否有被弃用的Spring Boot配置文件属性,可以在build.gradle文件里的dependencies闭包中添加:

implementation 'org.springframework.boot:spring-boot-properties-migrator'

在升级完成后,可以移除这个依赖。

升级MySQL JDBC驱动(可选)

这一步不是必须的,MySQL的JDBC驱动在2022年10月份的时候更改过名称,虽然不改也能继续用,不过还是建议顺路一起改一下吧,在build.gradle文件中的dependencies,将mysql:mysql-connector-java更改为com.mysql:mysql-connector-j,例如:

runtimeOnly 'com.mysql:mysql-connector-j'

升级到2.7

为了确保升级顺利,不要急着一步到位直接升级3.0,建议先将Spring Boot升级到2.7版本确认2.x时代的兼容性,截止发稿时最新的版本为2.7.6,可以将build.gradle中的plugins闭包内的org.springframework.boot版本改为2.7.6,例如:

plugins {
	id 'org.springframework.boot' version '2.7.6'
	id 'io.spring.dependency-management' version '1.1.0'
	id 'java'
}

构建并启动服务端确认没有问题后,可以关闭服务端,进行下一步升级。

升级Java版本

从Spring Boot 3.0开始,最低支持的Java版本变为Java 17、最高支持Java 19,如果还在使用Java 8或者Java 11的话,首先需要升级Java。
推荐使用LTS版本的Java 17,Oracle官方的JDK可以在这里下载,也可以使用诸如Eclipse Temurin之类的第三方构建OpenJDK,还可以使用Docker镜像openjdk:17.0.2。如果使用的是IntelliJ IDEA,可以在文件-项目结构-平台设置-SDK中点击+自动下载JDK,下载完毕后在项目设置-项目中更换SDK语言级别
如果对自己的代码能否在高版本Java正常运行没有信心,可以使用Eclipse Migration Toolkit for Java(EMT4J)
之类的工具检查一下是否存在不兼容高版本的写法。

升级Gradle版本

高版本的Java也需要高版本的Gradle进行构建,为了成功构建,还需要升级Gradle版本,对应的最低支持版本如下:

Java Gradle
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值