附录D:迁移检查清单
附录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 业务指标
- [ ] 用户体验改善
- [ ] 响应时间降低
- [ ] 系统稳定性提升
- [ ] 运维成本降低
使用建议:
- 打印本清单
- 逐项检查
- 记录问题
- 及时解决
相关章节: