Spring Boot 2.x 到 3.2 的全面升级指南.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

SpringBoot2.x到3.2的全面升级指南

SpringFramework是一种流行的开源企业级框架,用于创建在JavaVirtualMachine(JVM)上运行的独立、生产级应用程序。而SpringBoot是一个工具,可以让使用Spring框架更快、更轻松地开发Web应用程序和微服务。随着SpringBoot的不断发展,开发人员必须跟上最新的升级和变化。

最近,SpringBoot宣布发布3.2.x版本,该版本带来了多项新功能、错误修复和增强功能,鉴于对SpringBoot2.7.x版本的支持已于2025年11月18日结束,这是一个非常重要且强制性的关注用于将SpringBoot应用程序升级到最新的3.x版本。

因此,在本文中,我们将讨论如何从SpringBoot2.x迁移到3.x,以及升级的优势以及开发人员在此过程中可能遇到的潜在困难。

1.升级JDK17

SpringBoot3.0需要Java17作为最低版本。

如果您当前使用的是Java8或Java11,则需要在SpringBoot迁移之前升级JDK。

2.升级到SpringBoot3

查看项目及其依赖项的状态后,请升级到SpringBoot3.0的最新维护版本。

我们将使用SpringBoot3.2.0进行升级。

打开项目的pom.xml并更新SpringBoot的版本,如下所示。

parent

groupIdorg.springframework.boot/groupId

artifactIdspring-boot-starter-parent/artifactId

version3.2.0/version

/parent

3.配置属性迁移

在SpringBoot3.0中,一些配置属性被重命名/删除,开发人员需要相应地更新其perties/application.yml。

为了帮助您实现这一点,SpringBoot提供了一个spring-boot-properties-migrator模块。

我们可以通过将以下内容添加到Mavenpom.xml来添加迁移器:

dependency

groupIdorg.springframework.boot/groupId

artifactIdspring-boot-properties-migrator/artifactId

scoperuntime/scope

/dependency

4.升级到JakartaEE

由于JavaEE已更改为JakartaEE,SpringBoot3.x的所有依赖项API也从JavaEE升级为JakartaEE。

简单来说,您需要将所有javax的imports都替换为jakarta。具体如下:

javax.persistence.*-jakarta.persistence.*

javax.validation.*-jakarta.validation.*

javax.servlet.*-jakarta.servlet.*

javax.annotation.*-jakarta.annotation.*

javax.transaction.*-jakarta.transaction.*

5.调整@ConstructorBinding注解

@ConstructorBinding在@ConfigurationProperties类的类型级别不再需要,应将其删除。

当一个类或记录有多个构造函数时,它仍然可以在构造函数上使用,以指示应使用哪一个构造函数进行属性绑定。

6.SpringMVC和WebFlux的URL匹配更改

从SpringFramework6.0开始,尾部斜杠匹配配置选项已为deprecated,其默认值设置为false。

这意味着以前,以下控制器将匹配GET/health和GET/health/

@RestController

publicclassHealthController{

@GetMapping(/health)

publicStringhealth(){

returnApplicationisWorking

@RestC

文档评论(0)

187****0335 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档