SpringBoot版本2.7-3.2升级记录
Spring Boot 3.2依赖
系统需求
- Java 17 ~ Java 22
- Maven 3.6.3 or later
- Gradle 7.x(7.5 or later) and 8.x
Servlet容器 (Servlet 6.0)
- Tomcat 10.1
- Jetty 12.0
- Undertow 2.3
GraalVM原生镜像 (可选)
- GraalVM Community 22.3
- Native Build Tools 0.9.28
配置调整
application.properties
/application.yml
配置文件中,部分配置项需要更改配置名或者移除,Spring Boot提供了spring-boot-properties-migrator
工具用于在应用启动时输出配置分析报告,方便快速定位及修改。修改完成之后记得移除该工具。
xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-properties-migrator</artifactId>
<scope>runtime</scope>
</dependency>
1
2
3
4
5
2
3
4
5
自动装配的配置类原来的SPI配置文件扫描路径为resources/META-INF/spring.factories
,现在的路径为resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
。内容调整为配置类的完整路径,如果有多个自动装配配置类,每行配置一个配置类即可。例如:
- 原配置(spring.factories)
Java
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.yupaits.yutool.push.core.config.PushAutoConfigure,\
com.yupaits.yutool.push.core.config.PushAutoConfigure.NotificationAutoConfigure,\
com.yupaits.yutool.push.core.config.PushAutoConfigure.WebMsgAutoConfigure,\
com.yupaits.yutool.push.core.config.PushAutoConfigure.SmsAutoConfigure,\
com.yupaits.yutool.push.core.config.PushAutoConfigure.EmailAutoConfigure,\
com.yupaits.yutool.push.core.config.PushAutoConfigure.ImAutoConfigure,\
com.yupaits.yutool.push.core.config.WebSocketConfig
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
- 新配置(org.springframework.boot.autoconfigure.AutoConfiguration.imports)
Java
com.yupaits.yutool.push.core.config.PushAutoConfigure
com.yupaits.yutool.push.core.config.PushAutoConfigure.NotificationAutoConfigure
com.yupaits.yutool.push.core.config.PushAutoConfigure.WebMsgAutoConfigure
com.yupaits.yutool.push.core.config.PushAutoConfigure.SmsAutoConfigure
com.yupaits.yutool.push.core.config.PushAutoConfigure.EmailAutoConfigure
com.yupaits.yutool.push.core.config.PushAutoConfigure.ImAutoConfigure
com.yupaits.yutool.push.core.config.WebSocketConfig
1
2
3
4
5
6
7
2
3
4
5
6
7
代码调整
pom.xml
文件中的依赖项:javax.servlet:javax.servlet-api
修改为jakarta.servlet:jakarta.servlet-api
- 使用了
javax.annotation.*
注解的模块需要引用jakarta.annotation:jakarta.annotation-api
,其他javax相关的引用也是类似方式处理 - 未通过
spring-boot-stater
管理指定Hibernate的模块,需要单独指定hibernate-core
版本(当前最新为6.4.8.Final
) com.alibaba.cloud:spring-cloud-alibaba-dependencies
需更新到2023.x
版本,对应的nacos-server
也最好更新至v2.3.2版本
import包路径调整
javax.persistence.*
修改为jakarta.persistence.*
javax.validation.*
修改为jakarta.validation.*
javax.servlet.*
修改为jakarta.servlet.*
javax.annotation.*
修改为jakarta.annotation.*
javax.transaction.*
修改为jakarta.transaction.*
类变更
org.springframework.data.jpa.repository.support.JpaMetamodelEntityInformation
构造方法新增PersistenceUnitUtil
形参org.springframework.amqp.rabbit.connection.CorrelationData
获取ReturnedMessage
方法改为getReturned()
org.springframework.kafka.core.KafkaTemplate#send
方法返回的是CompletableFuture
类型对象,移除了addCallback
添加回调方法,使用CompletableFuture
自身的异步处理方法代替回调cn.hutool.extra.servlet.ServletUtil
改为cn.hutool.extra.servlet.JakartaServletUtil
Class.newInstance()
方法(Java 9弃用)替换为Class.getDeclaredConstructor().newInstance()
org.springframework.http.HttpMethod
由enum
类改为final class
,HttpMethod#resolve
改为HttpMethod#valueOf
- 使用
RestClient
替换RestTemplate
作为默认的Http客户端
评论区留言准则:
1. 本评论区禁止传播封建迷信、吸烟酗酒、低俗色情、赌博诈骗等任何违法违规内容。
2. 当他人以不正当方式诱导打赏、私下交易,请谨慎判断,以防人身财产损失。
3. 请勿轻信各类招聘征婚、代练代抽、私下交易、购买礼包码、游戏币等广告信息,谨防网络诈骗。