框架选型没有脱离场景的冠军。先把业务约束和交付环境量化,再用同一个最小业务验证候选,最后记录适用边界和退出成本。
Table of contents
Open Table of contents
从目标而不是品牌开始
RuntimeChoiceSample下载把目标映射为调查起点:
mvn -Dtest=SpringSourceLabTest#frameworkChoiceStartsFromADeploymentGoal test
代码故意不会自动给出唯一答案;启动速度和内存目标必须通过真实依赖与部署平台测量。
四种选择的重心
| 方案 | 主要优势 | 重点验证 |
|---|---|---|
| Spring Boot | 生态广、集成与人才多 | 自动配置复杂度、启动与依赖规模 |
| Jakarta EE | 标准 API、服务器实现可替换 | 目标运行时、厂商扩展和运维方式 |
| Quarkus | 构建期增强、容器与原生体验 | 扩展兼容、开发模式和迁移成本 |
| Micronaut | 编译期 DI、较少运行时反射 | 生态覆盖、注解处理和团队经验 |
表格只给调查方向,版本功能会变化。最终 ADR 必须引用候选版本的官方文档和实际实验结果。
实现同一个垂直切片
候选样例至少包含 REST、JSON 校验、数据库事务、认证、健康指标、配置密钥和一个外部调用。测试:
- 全量构建和增量反馈时间;
- 冷启动、空闲 RSS、稳态吞吐与 P99;
- 错误诊断、追踪和堆栈可读性;
- 依赖升级、漏洞修复与原生构建;
- 优雅停机和故障恢复。
不要只比较 Hello World,也不要只用供应商基准。
组织成本通常大于框架差异
现有库、平台模板、监控、测试工具和开发经验会显著影响总成本。迁移能带来的可量化收益若小于重写、培训和双轨运维成本,保留现有框架并治理模块边界可能更合理。
完成本阶段后,你应能从 BeanDefinition 一直追到代理、事务、MVC、自动配置和生产运行,而不是用注解名称代替机制解释。
下一步
当前 05.Spring生态与源码 阶段到此完成。按照暂停约定,本轮不进入 06.MyBatis、MySQL与数据架构;恢复目标后再从 MyBatis 配置解析开始。