大家好,我是R哥。
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 2020.0.0 正式釋出,全新顛覆性版本!
- Spring Cloud 2020 版本重大變革,更好的命名方式!
比如我舉兩個例子:
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 基於以下環境進行構建:
- JDK 17+,最高支援 JDK 23
- Spring Framework 6.2.0+
- Spring Boot 3.4.0
所以,這也是 Spring Cloud 2024.0.0 的最低依賴要求,其實JDK 和 Spring 版本是跟 Spring Boot 版本走的,升級請小心相容性。
模組升級
Spring Cloud 2024.0.0 更新了以下核心模組:
模組 | 版本 |
---|---|
Spring Cloud Vault | 4.2.0 |
Spring Cloud Bus | 4.2.0 |
Spring Cloud Task | 3.2.0 |
Spring Cloud Zookeeper | 4.2.0 |
Spring Cloud Kubernetes | 3.2.0 |
Spring Cloud Function | 4.2.0 |
Spring Cloud Commons | 4.2.0 |
Spring Cloud Openfeign | 4.2.0 |
Spring Cloud Circuitbreaker | 3.2.0 |
Spring Cloud Starter Build | 2024.0.0 |
Spring Cloud Stream | 4.2.0 |
Spring Cloud Consul | 4.2.0 |
Spring Cloud Gateway | 4.2.0 |
Spring Cloud Contract | 4.2.0 |
Spring Cloud Config | 4.2.0 |
Spring Cloud Build | 4.2.0 |
Spring Cloud Netflix | 4.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
的使用,以實現虛擬執行緒相容。
Spring Cloud 最新維護版本
Spring Cloud 支援的版本情況,以及對應的 Spring Boot、子模組版本如下表所示。
模組 | * 2025.0 (Northfields)* | 2024.0 (Moorgate) | 2023.0 (Leyton) | |
---|---|---|---|---|
spring-boot | 3.5.x | 3.4.x | 3.3.x/3.2.x | 3.1.x/3.0.x |
spring-cloud-bus | 4.3.x | 4.2.x | 4.1.x | 4.0.x |
spring-cloud-circuitbreaker | 3.3.x | 3.2.x | 3.1.x | 3.0.x |
spring-cloud-commons | 4.3.x | 4.2.x | 4.1.x | 4.0.x |
spring-cloud-config | 4.3.x | 4.2.x | 4.2.x | 4.1.x |
spring-cloud-consul | 4.3.x | 4.2.x | 4.1.x | 4.0.x |
spring-cloud-contract | 4.3.x | 4.2.x | 4.1.x | 4.0.x |
spring-cloud-function | 4.3.x | 4.2.x | 4.1.x | 4.0.x |
spring-cloud-gateway | 4.3.x | 4.2.x | 4.1.x | 4.0.x |
spring-cloud-kubernetes | 3.3.x | 3.2.x | 3.1.x | 3.0.x |
spring-cloud-netflix | 4.3.x | 4.2.x | 4.1.x | 4.0.x |
spring-cloud-openfeign | 4.3.x | 4.2.x | 4.1.x | 4.0.x |
spring-cloud-stream | 4.3.x | 4.2.x | 4.1.x | 4.0.x |
spring-cloud-task | 3.3.x | 3.2.x | 3.1.x | 3.0.x |
spring-cloud-vault | 4.3.x | 4.2.x | 4.1.x | 4.0.x |
spring-cloud-zookeeper | 4.3.x | 4.2.x | 4.1.x | 4.0.x |
需要注意的是:
正常維護中的版本中有 Spring Cloud 2023+ 了,2022 及之前的版本已經徹底結束生命週期了,官方不再提供維護支援了,非必要,新專案儘量不要再使用了。
總結
Spring Cloud 2024.0.0 更新了不少功能啊,各個模組都得到了升級和加強,特別是對 Spring Cloud Gateway 和 Spring Cloud Config 這兩個模組的更新非常大。
如果你問我有沒有必要升級最新版本,對於想嚐鮮的小夥伴是可以升級的,企業級生產專案就沒有必要升級了,也許還有一堆 bug 呢,提前瞭解下吧。
Maven 依賴給大家奉上:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>2024.0.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
Spring Cloud 依賴管理採用的是 import 匯入方式,裡面管理了許多子模組依賴,統一引入管理,使用時只需要引入對應依賴的座標即可,不需要再指定子模組的版本號。
另外,學 Spring Cloud 必須先掌握 Spring Boot,如果你還沒用過 Spring Boot,今天我就送你一份 《Spring Boot 學習筆記》這個很全了,包括底層實現原理及程式碼實戰,非常齊全,助你快速打通 Spring Boot 的各個環節。
Spring Boot 理論和實戰原始碼倉庫:
https://github.com/javastacks/spring-boot-best-practice
你們用的哪個 Spring Cloud 版本呢?歡迎留言分享~
好了,今天的分享就到這裡了,後面我會更新更多好玩的 Java 技術文章和最新的技術資訊,關注公眾號Java技術棧第一時間推送,不要走開哦。
最後,打個小廣告,如果你想系統學習 Spring Cloud 微服務,可以報名R哥出品的《Spring Cloud 微服務實戰課程》,已支援全新的 Spring Cloud 2023 版本,一次訂閱,永久免費更新。
Spring Cloud 無疑是現在 Java 微服務事實上的標準,完全基於 Spring Boot 構建,依賴 Spring 生態體系,可以很好的與各種 Spring 生態專案無縫對接。
所以,不管是職場提升還是面試跳槽,Spring Cloud 都是必備技能。
版權宣告: 本文系公眾號 "Java技術棧" 原創,轉載、引用本文內容請註明出處,抄襲、洗稿一律投訴侵權,後果自負,並保留追究其法律責任的權利。
更多文章推薦:
1.Spring Boot 3.x 教程,太全了!
2.2,000+ 道 Java面試題及答案整理(2024最新版)
3.免費獲取 IDEA 啟用碼的 7 種方式(2024最新版)
覺得不錯,別忘了隨手點贊+轉發哦!