跳到正文
Elaine Blog
返回

Spring 6/7 与 Boot 3/4 迁移

Spring 生态与源码

大版本迁移应拆成“JDK、依赖、源码、测试、配置、运行时”六层,每层都可验证和回滚。一次改完再看编译错误,会把因果关系混在一起。

Table of contents

Open Table of contents

先建立基线

记录当前 JDK、Spring、Boot、构建插件、容器和三方 starter 版本。运行单测、集成测试、契约测试和代表性压测,保存启动时间、内存、错误率与延迟。

本实验固定 Boot 4.1.1、Java 21,并同时在 JDK 25 构建。查看实验 pom.xml下载

迁移顺序

  1. 在旧框架支持范围内先升级 JDK 和构建工具;
  2. 清理已废弃 API 与重复依赖覆盖;
  3. javax.* 迁移为 Jakarta EE 10/11 对应的 jakarta.*
  4. 升级 Boot BOM,让它统一管理兼容依赖;
  5. 处理 starter、自动配置和测试模块变化;
  6. 运行生产流量回放与灰度。

不要对 javax 做全局文本替换:javax.sqljavax.crypto 等 Java SE 包不会迁到 Jakarta。

Boot 4 的可见变化

Boot 4 使用 Spring Framework 7,进一步模块化 starter 和测试支持。例如 MVC 推荐 spring-boot-starter-webmvc,AOP 使用 spring-boot-starter-aspectj。依赖是否存在应以当前Boot 构建系统文档为证据。

检查自定义自动配置的导入文件、条件注解、配置属性和失败分析器。三方 starter 若未声明 Boot 4 支持,不要靠排除依赖强行运行。

用行为证明完成迁移

编译通过只证明符号兼容。还要验证 JSON 格式、异常协议、事务回滚、代理类型、数据库方言、管理端点、优雅停机和原生反射配置。

灰度期间对比旧新版本业务结果和 SLO,保留数据库向后兼容与快速回滚。迁移完成后删除临时兼容层,更新 ADR 和运行手册。

下一步

阅读Reactor 与 Spring WebFlux,理解响应式模型的优势和阻塞边界。


分享这篇文章:

上一篇
Spring Boot 生产特性:健康检查、指标与优雅停机
下一篇
Reactor 与 Spring WebFlux:背压、线程切换和阻塞边界