Spring Boot 1.x、2.x 3.x区别汇总

Spring Boot 1.x、2.x 和 3.x 是 Spring Boot 发展过程中的三个主要大版本,每个版本都伴随着底层 Spring Framework 的升级、Java 版本的支持演进、架构理念的调整以及对现代云原生和响应式编程的支持增强。以下从 发布时间、核心依赖、Java 支持、关键特性、破坏性变更、适用场景 等维度进行系统对比分析。


一、总体演进概览

版本 发布时间 基于 Spring Framework 最低 Java 版本 最高支持 Java 主要方向
1.x 2014--2018 4.x Java 6/7 Java 8 快速启动、简化配置、约定优于配置
2.x 2018--2023 5.x Java 8 Java 19(2.7+) 性能优化、响应式支持、云原生准备
3.x 2022--至今 6.x Java 17 Java 21+ GraalVM 原生镜像、Jakarta EE 9+、模块化、现代化

✅ 关键转折点:

  • 2.x 引入响应式栈(WebFlux)和 Micrometer 监控
  • 3.x 是"现代化重构"版本,拥抱 Jakarta EE、GraalVM 和 Java 17+

二、各版本详细分析

🟢 Spring Boot 1.x(1.0 -- 1.5)

核心特点:
  • 首次提出"约定优于配置"理念,极大简化 Spring 应用搭建。
  • 内嵌 Tomcat/Jetty,无需部署 WAR。
  • 自动配置(@EnableAutoConfiguration)机制成熟。
  • 支持 Spring 4.x(基于 Servlet 3.0+)。
技术栈:
  • 默认 Web 容器:Tomcat 7/8
  • 默认 JSON:Jackson 2.6+
  • 安全:Spring Security 4.x
  • 数据库:Hibernate 4/5, Spring Data JPA
局限性:
  • 无响应式编程支持。
  • 监控端点(Actuator)功能较弱,路径为 /health、/info 等,无安全隔离。
  • 配置属性命名不统一(如 server.context-path vs management.context-path)。
现状:
  • 已停止维护(1.5.x 于 2019 年 8 月 EOL)。
  • 不建议新项目使用。

🔵 Spring Boot 2.x(2.0 -- 2.7)

重大升级(2.0):
  • 升级到 Spring Framework 5.x。
  • 引入 响应式编程栈 WebFlux(基于 Reactor)。
  • 默认使用 Spring Security 5(支持 OAuth2.0 客户端/资源服务器)。
  • Actuator 端点重构 :
    • 路径统一为 /actuator/xxx
    • 支持细粒度安全控制(management.endpoints.web.exposure.include=*)
  • 配置属性标准化(如 server.servlet.context-path 替代 server.context-path)。
  • 默认数据库连接池从 Tomcat JDBC 切换为 HikariCP(性能更好)。
  • 引入 Micrometer 作为统一指标监控门面(替代 Dropwizard Metrics)。
后续增强(2.1--2.7):
  • 支持 Java 11(2.1+)、Java 17(2.5+)
  • 支持 Kotlin、Lombok 深度集成
  • 支持 RSocket(2.2+)
  • 支持 GraalVM 实验性原生镜像(2.7+,需 Spring Native 项目)
破坏性变更(2.0):
  • Hibernate 5.2+(移除 Session.get() 的 String 重载)
  • Thymeleaf 3(模板语法变化)
  • Redis 客户端从 Jedis 切换为 Lettuce(默认)
现状:
  • 2.7.x 是最后一个 2.x 版本 ,已于 2023 年 11 月停止 OSS 支持(商业支持延续)。
  • 仍广泛用于存量系统,但新项目应优先考虑 3.x。

🟣 Spring Boot 3.x(3.0 -- 3.3+)

重大变革(3.0):

这是 Spring Boot 历史上最具颠覆性的版本之一

1. Java 17+ 强制要求
  • 最低 Java 17(LTS),推荐 Java 21(下一个 LTS)。
  • 利用 Java 17+ 新特性(如密封类、模式匹配预览等)。
2. 迁移到 Jakarta EE 9+
  • 所有 javax.* 包名替换为 jakarta.*:
    • javax.servlet → jakarta.servlet
    • javax.persistence → jakarta.persistence
    • javax.validation → jakarta.validation
  • 影响:所有依赖必须兼容 Jakarta EE 9+(如 Hibernate 6+、Tomcat 10+)。
3. GraalVM 原生镜像官方支持
  • 无需额外插件(如旧版 Spring Native),通过 native-maven-plugin 直接构建原生可执行文件。
  • 启动速度 < 100ms,内存占用降低 50%+,适合 Serverless/FaaS。
4. 移除过时技术
  • 移除:
    • Velocity 模板引擎
    • Guava 缓存自动配置
    • Commons Logging(全面转向 SLF4J)
    • @ConfigurationProperties 的宽松绑定(仅支持 kebab-case)
5. 可观测性增强
  • 深度集成 Micrometer Tracing(支持 Brave、OpenTelemetry)
  • Actuator 默认暴露 /actuator/health、/actuator/info,其他需显式开启。
6. 虚拟线程(Virtual Threads)初步支持(3.2+)
  • 与 Java 21+ 虚拟线程协同,提升高并发吞吐(需 Tomcat 10.1+ 或 Jetty 12)。
破坏性变更(3.x):
  • 所有 javax → jakarta(需代码/依赖升级)
  • Hibernate 6(JPQL 语法变化、字节码增强方式改变)
  • Thymeleaf 3.1(模板引擎更新)
  • 不再支持 Java 8/11
现状:
  • 当前主流版本(3.2/3.3 为最新稳定版)
  • 新项目唯一推荐版本

三、版本选择建议

场景 推荐版本 理由
全新项目(2024+) Spring Boot 3.2+ 支持 Java 17/21、GraalVM、Jakarta EE、长期维护
存量系统升级 2.7 → 3.x(需评估) 需处理 javax → jakarta、Hibernate 6 迁移
必须使用 Java 8/11 Spring Boot 2.7(最后支持) 3.x 不兼容 Java <17
需要 GraalVM 原生镜像 Spring Boot 3.0+ 官方集成,无需额外项目
使用旧版中间件(如 Tomcat 8) Spring Boot 1.5 或 2.7 3.x 要求 Tomcat 10+

四、迁移注意事项

从 2.x → 3.x 关键步骤:

  1. 升级 JDK 到 17+

  2. 替换所有 javax.* 为 jakarta.*(IDE 可批量替换)

  3. 升级依赖 :

    • Hibernate 5 → 6
    • JPA 注解从 javax.persistence → jakarta.persistence
    • Servlet API 从 javax.servlet → jakarta.servlet
  4. 检查第三方库兼容性(如 MyBatis 3.5.10+ 支持 Jakarta)

  5. 启用原生镜像(可选) :

    xml 复制代码
    <plugin>
      <groupId>org.graalvm.buildtools</groupId>
      <artifactId>native-maven-plugin</artifactId>
    </plugin>

五、总结

维度 1.x 2.x 3.x
定位 快速起步 企业级成熟 云原生现代化
Java 支持 6--8 8--19 17+
Servlet API javax javax jakarta
响应式 ❌ ✅(WebFlux) ✅(增强)
GraalVM ❌ 实验性(Spring Native) ✅(官方支持)
维护状态 EOL OSS EOL(2023) Active

💡 结论:

  • 新项目必须使用 Spring Boot 3.x(搭配 Java 17/21)
  • 2.x 仅用于维护旧系统
  • 1.x 应彻底淘汰

Spring Boot 3.x 不仅是版本升级,更是向 云原生、低延迟、高能效 架构的战略转型,代表了 Spring 生态的未来方向。

相关推荐
Rain的Java大神之路7 分钟前
[特殊字符]8年Java老兵转型AI Agent:90%的人挂在同一个坑,根本不用学Python!(万字实战复盘,建议收藏)
java·数据库·人工智能·后端·python·spring·ai编程
高级程序源28 分钟前
springboot大学生体测系统72170-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·python·django·课程设计
IT研究室35 分钟前
最新计算机毕业设计选题推荐-基于spring boot的文学名著分享系统-网站-文档指导-Java-springboot
java·spring boot·课程设计
denlaku38 分钟前
JDK 13 新特性详解
java·开发语言
秋饼39 分钟前
Java 后端企业级 LLM 网关实战:Spring Cloud Gateway 构建统一大模型接入层
java·ai·技术分享·后端开发
今年下半年1 小时前
【防重放】Spring Boot 通过自定义注解实现接口防重放
java·spring boot·自定义注解·防重放
WeiXin_DZbishe1 小时前
基于Node.js的马拉松赛事管理系统的设计与实现-计算机毕设 附源码【课程设计】90211
java·javascript·vue.js·python·php·课程设计
Wang's Blog1 小时前
Java 项目部署之 Docker工具快速入门: 使用 Docker 镜像命令练习
java·docker
桃西西呀1 小时前
Spring AI Alibaba 之九:我让 Agent 接着上一轮往下聊,它却只还给我一条消息,多轮记忆到底藏在哪
人工智能·spring·llm
企业数字化笔记1 小时前
多租户系统从哪里开始设计?租户身份、数据隔离、权限与套餐的整体方案
java·spring boot·后端·junit