Spring Boot 4教程 / 第 2 节
附录D:迁移检查清单
概述
本附录提供完整的 Spring Boot 3 到 4 迁移检查清单,确保迁移过程顺利进行。
D.1 迁移前检查
D.1.1 环境检查
JDK 版本
- 已安装 JDK 21 或更高版本
- 验证
java -version输出正确 - IDE 配置了 JDK 21
- CI/CD 环境已更新
构建工具
- Maven >= 3.9.0 或 Gradle >= 8.5
- 验证构建工具版本
- 更新构建脚本
IDE 支持
- IntelliJ IDEA >= 2024.1
- VS Code 已安装 Java 扩展
- 配置了 Java 21 支持
D.1.2 依赖检查
核心依赖
- 检查所有依赖的 Spring Boot 4 兼容性
- 列出需要升级的依赖
- 识别不兼容的依赖
- 准备替代方案
第三方库
- 检查数据库驱动兼容性
- 检查 ORM 框架版本
- 检查消息队列客户端
- 检查其他关键库
自定义库
- 检查内部库兼容性
- 计划内部库升级
- 测试内部库
D.1.3 代码审查
废弃 API 使用
- 搜索 RestTemplate 使用
- 搜索 WebSecurityConfigurerAdapter
- 搜索 @EnableGlobalMethodSecurity
- 搜索其他废弃 API
配置文件
- 检查 application.yml/properties
- 识别废弃的配置属性
- 准备配置迁移方案
自定义配置类
- 检查自动配置类
- 检查 Bean 定义
- 检查条件注解
D.2 迁移执行清单
D.2.1 代码迁移
更新 pom.xml/build.gradle
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>4.0.0</version> </parent> <properties> <java.version>21</java.version> </properties>替换 RestTemplate
- 创建 HTTP Interface
- 配置 HTTP 客户端
- 替换所有 RestTemplate 调用
- 测试 HTTP 调用
更新 Security 配置
- 移除 WebSecurityConfigurerAdapter
- 使用 SecurityFilterChain
- 更新为 Lambda DSL
- 测试安全配置
更新方法安全
- 替换 @EnableGlobalMethodSecurity
- 使用 @EnableMethodSecurity
- 测试方法级安全
更新数据访问代码
- 使用新的 Limit API
- 使用滚动查询
- 更新 Repository 方法
- 测试数据访问
D.2.2 配置迁移
更新 application.yml
# 启用虚拟线程 spring: threads: virtual: enabled: true # 更新数据库初始化配置 spring: sql: init: mode: always # 替代 datasource.initialization-mode # 启用 Problem Details spring: mvc: problemdetails: enabled: true更新数据库连接池
spring: datasource: hikari: maximum-pool-size: 20 # 减少连接数 minimum-idle: 5配置 AOT
spring: aot: enabled: true
D.2.3 测试迁移
单元测试
- 更新测试依赖
- 修复失败的测试
- 添加虚拟线程测试
- 验证测试覆盖率
集成测试
- 更新测试配置
- 测试数据库集成
- 测试消息队列
- 测试外部服务调用
性能测试
- 基准测试
- 压力测试
- 对比测试结果
D.3 迁移后验证
D.3.1 功能验证
应用启动
- 应用正常启动
- 检查启动日志
- 验证虚拟线程已启用
- 检查启动时间
核心功能
- 用户认证和授权
- 数据库操作
- API 端点
- 消息处理
- 文件上传/下载
集成功能
- 第三方服务调用
- 消息队列
- 缓存
- 定时任务
D.3.2 性能验证
启动性能
- 记录启动时间
- 对比 Boot 3 启动时间
- 验证改进幅度
运行时性能
- HTTP 吞吐量测试
- 数据库查询性能
- 消息处理性能
- 内存占用
资源使用
- CPU 使用率
- 内存使用
- 线程数量
- 数据库连接数
D.3.3 监控验证
Actuator 端点
- /actuator/health
- /actuator/metrics
- /actuator/prometheus
- 虚拟线程指标
日志
- 检查应用日志
- 检查错误日志
- 验证日志格式
- 配置日志级别
追踪
- 分布式追踪
- 请求追踪
- 性能追踪
D.4 生产部署清单
D.4.1 部署前准备
备份
- 备份数据库
- 备份配置文件
- 备份当前版本
- 准备回滚方案
环境准备
- 生产环境 JDK 21
- 更新环境变量
- 更新配置
- 准备监控
部署计划
- 制定部署时间表
- 准备回滚计划
- 通知相关人员
- 准备应急预案
D.4.2 部署执行
灰度发布
- 部署到 1% 流量
- 监控关键指标
- 逐步增加流量
- 全量发布
监控
- 实时监控应用状态
- 监控错误率
- 监控性能指标
- 监控资源使用
验证
- 功能验证
- 性能验证
- 用户反馈
- 错误日志
D.4.3 部署后检查
稳定性检查
- 运行 24 小时无重大问题
- 错误率在正常范围
- 性能指标达标
- 用户反馈正常
性能对比
- 启动时间改善
- 吞吐量提升
- 延迟降低
- 资源使用优化
文档更新
- 更新部署文档
- 更新运维手册
- 记录问题和解决方案
- 分享经验教训
D.5 回滚清单
D.5.1 回滚触发条件
严重问题
- 应用无法启动
- 核心功能失效
- 数据丢失或损坏
- 严重性能问题
性能问题
- 响应时间增加 > 50%
- 错误率 > 5%
- 资源使用异常
- 用户投诉增加
D.5.2 回滚步骤
准备回滚
- 确认回滚版本
- 准备回滚脚本
- 通知相关人员
- 停止新流量
执行回滚
- 部署旧版本
- 恢复配置
- 验证功能
- 恢复流量
验证回滚
- 应用正常运行
- 功能正常
- 性能恢复
- 用户反馈
D.6 常见问题检查
编译错误
- 检查 JDK 版本
- 检查依赖版本
- 检查 API 变更
运行时错误
- 检查配置文件
- 检查环境变量
- 检查日志
性能问题
- 虚拟线程是否启用
- 连接池配置
- JVM 参数
D.7 成功标准
D.7.1 技术指标
- 启动时间 < 1.5s
- HTTP 吞吐量提升 > 100%
- 内存使用降低 > 20%
- 错误率 < 0.1%
D.7.2 业务指标
- 用户体验改善
- 响应时间降低
- 系统稳定性提升
- 运维成本降低
使用建议:
- 打印本清单
- 逐项检查
- 记录问题
- 及时解决
相关章节: