Spring Boot 4 架构巨变解析(六):从「约定优于配置」到「编译期优先」
一、引言:Boot 3 的隐痛
在 AI 电商微服务系统的日常开发中,我们团队对 Spring Boot 3 有着复杂的感情——它确实好用,但用久了你会发现几道隐形的"裂纹":
1. 启动速度的瓶颈
我们的推荐引擎服务基于 Spring Boot 3.4,冷启动需要 8~12 秒。在 Kubernetes HPA 弹性缩容场景下,新 Pod 从创建到就绪需要近 20 秒,流量突增时根本来不及扩容。虽然 GraalVM Native Image 能压到 1 秒以内,但构建时间长、调试困难、反射兼容性问题频发,团队迟迟无法全面落地。
2. 运行时臃肿
一个普通的订单服务,引入spring-boot-starter-web、spring-boot-starter-data-jpa、spring-boot-starter-security后,fat jar 轻松突破 120MB。其中大量类在运行时根本不会触碰,但它们占据了内存和类加载的时间。
3. 模块化不足
Spring Boot 3 的spring-boot核心包仍然是一个庞大的单体,包含了自动配置、属性绑定、环境抽象、应用上下文等所有功能。当你在非 Web 场景(如消息消费者)只需要其中一小部分时,依然要全量引入。
4. 虚拟线程支持不彻底
JDK 21 引入了虚拟线程,Boot 3.2
