专栏名称: OSC开源社区
OSChina 开源中国 官方微信账号
目录
相关文章推荐
码农翻身  ·  漫画 | ... ·  昨天  
赛尔实验室  ·  哈工大SCIR 8篇长文被 COLING ... ·  2 天前  
程序员的那些事  ·  人人影视:将 20 ... ·  4 天前  
程序猿  ·  我删除了一段看起来没用的代码… ·  5 天前  
51好读  ›  专栏  ›  OSC开源社区

Spring Cloud 2024正式GA,年度大版本更新

OSC开源社区  · 公众号  · 程序员  · 2024-12-08 20:20

正文

↓推荐关注↓

2024 年都接近尾声了,Spring Cloud 2024 正式版才刚刚发布,真是姗姗来迟啊。

Spring Cloud 2024 从里程碑版本到正式版本,一共发布了 4 次版本:

  • 2024.0.0
  • 2024.0.0-RC1
  • 2024.0.0-M2
  • 2024.0.0-M1

来看看最新的版本情况:

Spring Cloud 2024,代号:Moorgate,关于版本的命名、代号,发布时间是不是很奇怪?

其实 Spring Cloud 最新的版本命名方式早已经变更了,以后就是 YEAR.x 这种命名方式了,不清楚的可以看下我之前写的两篇文章:

比如我举两个例子:

Spring Cloud 2024.0.0 中的 2024 是指 Spring Cloud 2024.x 版本线,2023.0.0 则是指 2023 这个版本线的第 1 个版本,而不是指某个年份发布的版本。

如果没有意外,Spring Cloud 2025.x 将会在 2025 年 12 月份正式发布,也一样会经历里程碑版本、候选版本,最后发布正式版本,这需要一个周期。

新特性解读

Spring Cloud 2024.0.0 是一个大版本,来看看更新了啥。

系统环境

Spring Cloud 2024.0.0 基于以下环境进行构建:

所以,这也是 Spring Cloud 2024.0.0 的最低依赖要求,其实JDK 和 Spring 版本是跟 Spring Boot 版本走的,升级请小心兼容性。

模块升级

Spring Cloud 2024.0.0 更新了以下核心模块:

模块版本
Spring Cloud Vault4.2.0
Spring Cloud Bus4.2.0
Spring Cloud Task3.2.0
Spring Cloud Zookeeper4.2.0
Spring Cloud Kubernetes3.2.0
Spring Cloud Function4.2.0
Spring Cloud Commons4.2.0
Spring Cloud Openfeign4.2.0
Spring Cloud Circuitbreaker3.2.0
Spring Cloud Starter Build2024.0.0
Spring Cloud Stream4.2.0
Spring Cloud Consul4.2.0
Spring Cloud Gateway4.2.0
Spring Cloud Contract4.2.0
Spring Cloud Config4.2.0
Spring Cloud Build4.2.0
Spring Cloud Netflix4.2.0

Spring Cloud CircuitBreaker

之前的版本有一个问题:

CircuitBreaker 实例只支持全局禁用 TimeLimiter,或者必须定义一个自定义的长时间超时配置,即使实例不需要考虑超时问题,或者已经有超时配置,也需要使用该自定义配置。

Spring Cloud 2024.0.0 支持对所有 CircuitBreaker 实例,按组或实例级别禁用 TimeLimiter,可控制的颗粒度更小了。

Spring Cloud Config

更新内容如下:

  • 修复一个 S3 协议的后端存储,对于多个应用程序名称的行为有所不同的问题。
  • 支持在环境存储库中使用多标签,服务器端会处理多标签,无需客户端介入。
  • 支持使用给定的字符集存储和接收资源。
  • 添加对 MongoDB 环境存储库支持。

Spring Cloud Gateway

更新内容如下:

  • 支持缓存网关过滤器(filters),以避免在每一个请求中进行排序。
  • 支持在 HttpClientProperties 中配置 SslBundles 参数。
  • 支持 Netty 的 HTTP Client 连接池的 leasing 策略配置。
  • 支持在 MVC 服务器中实现 ModifyResponseBody。
  • 使用了新的 Spring Boot HTTP 客户端自动配置框架,配置更简单方便了。
  • Webflux Java DSL 添加了一个嵌套布尔谓词的方法。
  • 支持向路由添加启用标志。
  • 在 Grafana 模板中添加了 QPS、延迟等指标。
  • 修复了与多个路由一起使用的同一个 redis rate limiter bucket。

Spring Cloud Kubernetes

更新内容如下:

  • 添加对配置观察器(watcher)的支持,以关闭应用程序并刷新应用程序。

Spring Cloud Netflix

更新内容如下:

  • 添加对 RestClient 的支持,并成为了 Netflix Eureka 的默认 HTTP 客户端。

Spring Cloud Commons

更新内容如下:

  • 添加对负载平衡 RestTemplateBuilder 的支持。
  • 支持无需 KeyStore 就可以创建一个 TrustStore。

Spring Cloud Bus

更新内容如下:

  • 添加了一个关闭事件、端点,以及监听器。

Spring Cloud OpenFeign

更新内容如下:

  • ignorecase 字段添加到 Spring 分页,以与 SortHandlerMethodArgumentResolverSupport::parseIgnoreCase 进行兼容。

Spring Cloud Stream

更新内容如下:

  • 确保 BindingServiceProperties.bindings 的线程安全性。
  • 支持在 Supplier 中使用 PostProcessing 的能力。
  • 更改 DefaultBinderFactory 类的 getBinder 方法中 synchronized 的使用,以实现虚拟线程兼容。

插播一条:如果你近期准备面试跳槽,点击Java面试库小程序刷题吧,共 3000+ 道,几乎覆盖了所有主流 Java 技术面试题。

Spring Cloud 最新维护版本

Spring Cloud 支持的版本情况,以及对应的 Spring Boot、子模块版本如下表所示。

模块* 2025.0 (Northfields)*2024.0 (Moorgate)2023.0 (Leyton)2022.0 (Kilburn)
spring-boot3.5.x3.4.x3.3.x/3.2.x3.1.x/3.0.x
spring-cloud-bus4.3.x4.2.x4.1.x4.0.x
spring-cloud-circuitbreaker3.3.x3.2.x3.1.x3.0.x
spring-cloud-commons4.3.x4.2.x4.1.x4.0.x
spring-cloud-config4.3.x4.2.x4.2.x4.1.x
spring-cloud-consul4.3.x4.2.x4.1.x4.0.x
spring-cloud-contract4.3.x4.2.x4.1.x4.0.x
spring-cloud-function4.3.x4.2.x4.1.x4.0.x
spring-cloud-gateway4.3.x4.2.x4.1.x4.0.x
spring-cloud-kubernetes3.3.x3.2.x3.1.x3.0.x
spring-cloud-netflix4.3.x4.2.x4.1.x4.0.x
spring-cloud-openfeign4.3.x4.2.x4.1.x4.0.x
spring-cloud-stream4.3.x4.2.x4.1.x4.0.x
spring-cloud-task3.3.x3.2.x3.1.x3.0.x
spring-cloud-vault4.3.x4.2.x4.1.x4.0.x
spring-cloud-zookeeper4.3.x4.2.x4.1.x4.0.x

需要注意的是:

正常维护中的版本中有 Spring Cloud 2023+ 了,2022 及之前的版本已经彻底结束生命周期了,官方不再提供维护支持了,非必要,新项目尽量不要再使用了。

总结

Spring Cloud 2024.0.0 更新了不少功能啊,各个模块都得到了升级和加强,特别是对 Spring Cloud GatewaySpring Cloud Config 这两个模块的更新非常大。

如果你问我有没有必要升级最新版本,对于想尝鲜的小伙伴是可以升级的,企业级生产项目就没有必要升级了,也许还有一堆 bug 呢,提前了解下吧。

Maven 依赖给大家奉上:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloudgroupId>
            <artifactId>spring-cloud-dependenciesartifactId>
            <version>2024.0.0version>
            <type>pomtype>
            <scope>importscope>
        dependency>
    dependencies>
dependencyManagement>

Spring Cloud 依赖管理采用的是 import 导入方式,里面管理了许多子模块依赖,统一引入管理,使用时只需要引入对应依赖的坐标即可,不需要再指定子模块的版本号。

你们用的哪个 Spring Cloud 版本呢?欢迎留言分享~