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.WebSocketConfig1
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.WebSocketConfig1
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.JakartaServletUtilClass.newInstance()方法(Java 9弃用)替换为Class.getDeclaredConstructor().newInstance()org.springframework.http.HttpMethod由enum类改为final class,HttpMethod#resolve改为HttpMethod#valueOf- 使用
RestClient替换RestTemplate作为默认的Http客户端
评论区留言准则:
1. 本评论区禁止传播封建迷信、吸烟酗酒、低俗色情、赌博诈骗等任何违法违规内容。
2. 当他人以不正当方式诱导打赏、私下交易,请谨慎判断,以防人身财产损失。
3. 请勿轻信各类招聘征婚、代练代抽、私下交易、购买礼包码、游戏币等广告信息,谨防网络诈骗。