当前位置: 首页 > news >正文

Spring全家桶介绍

本文用于本人技术学习和备忘。水平有限,如有错漏欢迎指正!
原创不易,如有转载请标注出处:https://blog.csdn.net/luyou0401/article/details/153249372

Spring全家桶介绍

  • Spring全家桶版本关系
  • Spring Framework
    • 版本特点
      • Spring Framework 1.x - 奠基时代 (2004-2006)
      • Spring Framework 2.x - XML配置的巅峰 (2006-2009)
      • Spring Framework 3.x - 全面拥抱注解 (2009-2013)
      • Spring Framework 4.x - Java 8与现代应用 (2013-2017)
      • Spring Framework 5.x - 反应式革命 (2017-2022)
      • Spring Framework 6.x - 面向未来 (2022-至今)
  • Spring Boot
    • 版本变更
      • Spring Boot 1.x:经典的起点
      • Spring Boot 2.x:现代化的演进
      • 🚀 Spring Boot 3.x:面向未来的飞跃
    • 选型建议
      • 新项目启动
      • 现有项目升级
      • 微服务场景
  • Spring Cloud
  • Spring Cloud Alibaba
    • Spring Cloud Alibaba 与 Spring Cloud 的关系
    • 版本特点与演进详解
    • 核心组件功能


Spring全家桶版本关系

   框架与组件版本对应关系一览:

Spring Boot 版本JDK 要求Spring FrameworkSpring CloudSpring Cloud AlibabaServlet 容器其他关键组件 (示例)
3.2.x17 - 216.0.x2022.x / 2023.x2023.0.xTomcat 10.1.xMyBatis-Plus ≥3.5.3.1
3.1.x17 - 206.0.x2022.x2022.0.0.0Tomcat 10.1.xMyBatis-Plus ≥3.5.3.1
3.0.x17 - 196.0.x2022.0.x2022.0.0.0Tomcat 10.1.xMyBatis-Plus ≥3.5.3.1
2.7.x8 - 195.3.x2021.x2021.xTomcat 9.0.xMyBatis-Plus 3.4.x
2.6.x8 - 185.3.x2021.x-Tomcat 9.0.x-
2.5.x8 - 165.3.x2020.x-Tomcat 9.0.x-
2.4.x8 - 11-2020.0.x2.2.x--
2.3.x8 - 11-Hoxton2.2.x--
2.2.x8-Hoxton---
2.1.x8-Greenwich2.1.x--
2.0.x8-Finchley---
1.5.x7-Dalston/Edgware---

Spring Cloud 的版本命名
   Spring Cloud 没有采用传统的数字版本号,而是使用开发代号(如 Greenwich, Hoxton)。但从 Spring Cloud 2020.0.x 开始,版本命名规则改为使用日历化版本号(如 2021.0.0),更易于理解和排序。

官方网址:

项目名称官方网址主要资源
Springhttps://spring.io/projects/spring-framework这是整个Spring生态的主站,您可以在这里找到所有Spring项目(包括Spring Framework, Spring Boot等)的文档、教程、指南和下载信息
Spring Cloudhttps://spring.io/projects/spring-cloud这是Spring Cloud的专属项目页面。在此您可以查看发布信息、版本详情,并获取官方文档
Spring Cloud Alibabahttps://sca.aliyun.com这是Spring Cloud Alibaba的官网,提供了详细的中文文档、学习资源、用户指南以及无疑答疑服务

Spring Framework

   我们来详细梳理一下 Spring Framework 各主要版本的特点和演进历程。Spring Framework 是整个 Spring 生态的基石,它的每次重大升级都带来了新的编程范式和技术能力。

   下图清晰地展示了Spring Framework各主要版本的演进历程及其核心特性:

在这里插入图片描述


版本特点


Spring Framework 1.x - 奠基时代 (2004-2006)

  • 核心特性
    • 轻量级依赖注入容器: 通过 XML 配置管理 Java 对象及其依赖关系,颠覆了传统的硬编码模式。
    • 面向切面编程: 提供了声明式事务管理等AOP能力,将横切关注点与业务逻辑分离。
    • 模板化封装: 引入了 JdbcTemplateHibernateTemplate 等,极大地简化了 JDBC 等繁琐的 API 操作。
  • 历史意义
    • 奠定了 Spring 的核心思想——“通过依赖注入实现控制反转”,为企业级 Java 开发提供了一种更优雅、更松耦合的解决方案。

Spring Framework 2.x - XML配置的巅峰 (2006-2009)

  • 核心特性
    • XML命名空间支持: 引入了 contextaoptx 等命名空间,使 XML 配置更加简洁、可读。
    • 注解支持的开端: 开始了向注解配置的过渡,支持 @Autowired@Qualifier 等核心注解。
    • AspectJ集成: 提供了更强大的 AOP 支持。
  • 历史意义
    • XML 配置的优势发挥到极致,同时开启了从 XML 向注解配置的转型。

Spring Framework 3.x - 全面拥抱注解 (2009-2013)

  • 核心特性
    • Java-based Configuration: 引入了 @Configuration@Bean 注解,允许开发者几乎完全使用 Java 代码来配置应用,这是革命性的进步。
    • 表达式语言: 引入了强大的 Spring Expression Language
    • 全面的注解支持: 彻底淘汰了 @Deprecated 的注解,并新增了 @PropertySource@EventListener 等。
  • 历史意义
    • 基本完成了从 XMLJava 代码配置的范式转移,奠定了现代 Spring 应用的配置基础。

Spring Framework 4.x - Java 8与现代应用 (2013-2017)

  • 核心特性
    • 全面支持 Java 8: 支持 lambda 表达式、方法引用、新的时间API等。
    • 条件化配置: 引入了 @Conditional 注解,这是 Spring Boot 自动配置 的基石。
    • 泛型依赖注入: 支持在注入时使用泛型信息。
    • 反应式编程的先驱: 开始引入 Reactor 等反应式编程模型的初步支持。
  • 历史意义
    • Spring Boot 的爆发打下了坚实的技术基础,并开始应对现代应用对异步和非阻塞的需求。

Spring Framework 5.x - 反应式革命 (2017-2022)

  • 核心特性
    • 反应式栈: 引入了 Spring WebFlux,一个全新的、非阻塞的、异步的 Web 框架,用于替代传统的 Servlet 栈,支持高并发场景。
    • 函数式 Web 框架: 提供了轻量级的函数式编程模型来定义端点。
    • Kotlin 的全面支持: 将 Kotlin 提升为与 Java 并列的一等公民语言。
    • 模块化: 代码库被拆分为多个独立的 JAR,提升了灵活性。
  • 历史意义
    • 这是 Spring 在架构上的一次重大范式扩展,从传统的命令式、同步阻塞模型,正式迈入了反应式、异步非阻塞的领域。

Spring Framework 6.x - 面向未来 (2022-至今)

  • 核心特性
    • 基于 Jakarta EE 9+: 这是一个破坏性变更。将所有 javax.* 包名迁移至 jakarta.* ,为利用最新的 Jakarta EE 特性(如 Servlet 6.0)铺平了道路。
    • 原生镜像与 GraalVM 支持: 提供了对 Spring 应用编译为原生可执行文件的正式支持,能实现毫秒级启动和极低的内存占用,这是为云原生时代量身定做的特性。
    • 观测能力: 引入了新的 ObservationContext,统一了 Metrics(指标)和 Tracing(链路追踪)。
    • 要求 Java 17+: 强制要求 JDK 17 或更高版本,以利用最新的 LTS 版本的性能和语言特性。
  • 历史意义
    • Spring 6 是一次面向未来的基础性升级,旨在引领 Java 生态全面进入 云原生、原生编译和 Jakarta EE 的新时代。

Spring Boot

   Spring Boot1.x3.x 的迭代,见证了 Java 生态的演进。下面这个表格清晰地梳理了它们的主要区别和特性:

特性维度Spring Boot 1.xSpring Boot 2.xSpring Boot 3.x
最低JDK要求Java 7Java 8Java 17
Spring框架基础-Spring Framework 5Spring Framework 6
配置方式XML与少量注解混合Java配置与注解为主延续并增强Java配置与注解
核心技术栈Servlet容器、Spring MVC响应式编程(WebFlux)、ServletGraalVM原生镜像Jakarta EE
第三方集成版本较旧的稳定库升级至Hibernate 5.2+、Tomcat 8.5+等Jakarta EE 9+ (包名javaxjakarta)
维护状态已停止维护2.7.x及更早版本已停止维护持续维护

版本变更


Spring Boot 1.x:经典的起点

   1.x 版本以其稳定性和完善的生态系统著称。不过,它依赖的第三方库版本相对老旧,并且某些功能需要较多手动配置。需要注意的是,Spring Boot 1.x 已停止维护,因此新项目不建议选用。


Spring Boot 2.x:现代化的演进

   2.x 是一个重要的现代化演进版本。它强制要求 JDK 8,并利用其新特性(如Lambda表达式、新的时间API)提升了开发效率和代码质量。它引入了 Spring WebFlux 以支持响应式编程,并大幅精简了配置。需要注意的是,Spring Boot 2.7.x2.x 的最后一个功能版本,也是支持 JDK 8 的终点,官方已停止免费维护。
   从 1.x升级到 2.x 时,需注意配置变更和API更新。


🚀 Spring Boot 3.x:面向未来的飞跃

   3.x 是一次面向未来的重大升级,强制要求 JDK 17 及以上。它基于 Spring Framework 6,并全面转向 Jakarta EE 9+(所有 javax 包名改为jakarta),这是升级时最主要的破坏性变更和适配工作点。它提供了对 GraalVM 原生镜像的正式支持,能极大提升应用启动速度和降低内存占用,并增强了应用可观测性。
   从 2.x 升级到 3.x 是重大变更,官方建议先升级到 2.7.x 版本,再升级到 3.x,并需确保所有第三方依赖已兼容 Jakarta EE 9+。


选型建议


新项目启动

   如果条件允许(团队熟悉且无需兼容旧JDK环境),强烈推荐直接采用 Spring Boot 3.1.x3.2.x + JDK 17/21 LTS 。这可以让你享受到最新的特性、性能优化和长期支持。
   如果必须使用 JDK 8,则只能选择 Spring Boot 2.7.x,并需注意其已停止维护。


现有项目升级

   从 2.x 升级到 3.x:这是一个重大变更,务必规划充足的测试时间。升级路径是:先升级 JDK17+,再升级 Spring Boot 到 3.x,最后解决 Jakarta EE 变更和依赖兼容性问题。
   在 2.x 系列内升级:例如从 2.5.x 升级到 2.7.x,通常相对平滑,但仍需参考官方发布说明,注意被弃用的配置。


微服务场景

   若采用微服务架构并计划使用 Spring Cloud,需特别注意版本对应关系。例如,Spring Boot 3.x 对应 Spring Cloud 2022.x2023.x,而 Spring Boot 2.7.x 则对应 Spring Cloud 2021.x


Spring Cloud

   Spring Cloud 版本迭代很快,不同版本在特性和组件支持上差异显著。

Spring Cloud 版本发布日期范围核心特性 / 关键变化对应的 Spring Boot 版本
2022.0.x2022年及以后JDK 17以上;支持Spring Boot 3.x;全面转向Jakarta EE3.1.x, 3.0.x
2021.0.x2021年支持Spring Boot 2.7.x和2.6.x。2.7.x, 2.6.x
2020.0.x2020年启用日历化版本号;需Spring Boot 2.4+;移除对Zuul 1等过时功能的支持。2.5.x
Hoxton2019-2020年Spring Boot 2.2.x/2.3.x的最后一个传统命名版本;增强对Spring Cloud Gateway和响应式编程的支持。2.3.x
Greenwich & Finchley2017-2019年全面集成Netflix OSS组件(如Eureka, Hystrix);Finchley是个大版本,要求Spring Boot 2.x。2.1.x (Greenwich), 2.0.x (Finchley)
Edgware & Dalston2016-2017年基于Spring Boot 1.5.x;Edgware相较Dalston支持了如spring-cloud-gateway等组件的新版本。1.5.x
Angel & Brixton2015-2016年最初的版本;提供基础的服务发现、配置管理等能力。1.2.x - 1.3.x

选型建议

  • 如果条件允许(如可使用JDK 17),推荐选择 Spring Cloud 2022.0.x + Spring Boot 3.x,以便享受最新的技术特性和长期支持。
  • 如果仍需使用JDK 8,可选择 Spring Cloud 2021.0.x + Spring Boot 2.7.x,但需注意官方已停止对该Spring Boot版本的免费维护。

Spring Cloud Alibaba


Spring Cloud Alibaba 与 Spring Cloud 的关系

实现与标准

  • Spring Cloud:定义了一套标准的微服务开发接口和规范(例如服务发现、配置管理、熔断降级等)。
  • Spring Cloud Alibaba:是这套标准的一个具体实现,它用阿里巴巴的组件“填充”了 Spring Cloud 定义的这些接口。

下图直观地展示了Spring Cloud Alibaba如何作为桥梁,将阿里组件融入Spring Cloud生态:

Spring Cloud Alibaba
实现层与组件
Spring Cloud 标准接口
Nacos
Nacos
Sentinel
服务发现
配置管理
熔断降级

版本特点与演进详解

Spring Cloud Alibaba 的版本与 Spring Cloud 和 Spring Boot 版本强相关。选择时务必参考官方提供的版本兼容表。

Spring Cloud Alibaba 版本对应的 Spring Cloud 版本支持的 Spring Boot 版本核心组件与特点
2022.0.0.02022.0.x3.0.x, 3.1.x支持 Spring Boot 3JDK 17+、Jakarta EE。这是面向未来的版本。
2021.0.5.02021.0.x2.7.x, 2.6.x目前与 Spring Boot 2.7.x 搭配最稳定的版本之一。
2021.0.1.02021.0.x2.7.0首个支持 Spring Cloud 2021 的版本。
2.2.10.RELEASEHoxton2.3.x, 2.2.x基于 Spring Boot 2.2-2.3 的经典稳定版本,许多老项目在使用。
2.2.7.RELEASESpring Cloud Hoxton2.2.x, 2.3.x引入 Nacos 2.0 客户端支持,性能提升。
2.2.0.RELEASESpring Cloud Hoxton2.2.x重大升级: • Nacos 成为服务发现和配置中心首选。 • Sentinel 成为熔断降级首选。 • Seata 正式集成,用于分布式事务。
2.1.0.RELEASESpring Cloud Greenwich2.1.x开始提供对 Spring Cloud Stream 的支持。
0.9.0.RELEASE 及更早Spring Cloud Edgware / Finchley2.0.x, 1.5.x早期探索版本,功能不完善,目前已不推荐使用。

核心组件功能

  • Nacos:动态服务发现、配置管理和服务管理平台。相比 Eureka,它同时具备了服务注册中心和配置中心的功能,且支持配置的灰度管理。
  • Sentinel:流量控制、熔断降级、系统自适应保护。相比 Hystrix,它提供了更丰富的流量控制维度(如 QPS、线程数、系统负载)和实时的监控台。
  • Seata:高性能的分布式事务解决方案,提供了 AT、TCC 等模式。

本文用于本人技术学习和备忘。水平有限,如有错漏欢迎指正!
原创不易,如有转载请标注出处:https://blog.csdn.net/luyou0401/article/details/153249372

http://www.dtcms.com/a/483646.html

相关文章:

  • 中英双板网站模版网上给别人做网站
  • dcpatchscan.exe这是什么
  • 从零学算法2131
  • IT做网站工资怎么样天水网站开发
  • C++异常与智能指针
  • 网站后台信息怎么更新忽悠别人做商城网站
  • NVMe高速传输之摆脱XDMA设计53: 选择测试环境软件平台
  • 品牌网站建设磐石网络优等网站如何不被百度搜到
  • 如何让Agent停止输出,使用strands agents sdk
  • Json数据字段类型兼容性处理
  • IvorySQL 亮相第 27 届中国国际软件博览会:开源创新,共筑软件新生态
  • 景安一个空间怎么做多个网站wampserver装wordpress
  • Electron技术深度解析:跨平台桌面开发的利器与挑战
  • FocusAny 发布v1.1.0 插件搜索过滤,FAD文件优化,插件显示MCP服务
  • AI硬件的“窄门”:未来智能创始人马啸的成功与启示
  • 潍坊信息网网站建设手机网页尺寸
  • 做羞羞的事的网站东莞最新招聘
  • 上海网站设计外包微信小程序登录入口官网
  • 活动 网站 源码网站开发 手机 电脑
  • 学而思编程网站重庆荣昌网站建设价格
  • 个人的网站备案多少钱福州鼓楼区建设局网站
  • python如何使用nacos
  • 网站建设建站南京哪里做网站
  • 有谁知道网站优化怎么做大型门户网站核心技术
  • 网站开发过程中的功能需求分析wordpress小插件下载
  • 网站运营推广该如何做上海做网站公司有哪些
  • 网站建设方案范文2000字扁平化网站配色
  • 【计算机视觉】Harris角点检测
  • 由于openssl升级导致重启php时提示libssl.so.1.0.0不存在
  • 用wordpress做网站青海省教育厅门户网站登录