【方向盤】Spring Cloud 2021.0.0正式發(fā)布,F(xiàn)eignClient調用結果可一鍵緩存
你好,我是方向盤(YourBatman)。筆者的公號是保留地,只分享原創(chuàng),不轉載、不發(fā)商務廣告!
前言
北京時間2021-12-01,Spring Cloud 2021.0.0正式發(fā)布。話說,2021年都快過完了呀,怎么才第一個版本呢?如果對比去年2020.0.0版本發(fā)布時間是2020-12-22的話,發(fā)現(xiàn)還是有“進步”的哈。
【方向盤】Spring Cloud 2020.0.0正式發(fā)布,再見了Netflix
其實,Spring Cloud的發(fā)版速度慢是必然的,因為它下面的子項目實在太多了,并不像Spring Boot那樣來得純粹很好掌控。每個子項目都有自己的發(fā)版節(jié)奏,Spring Cloud協(xié)調融合在一起,還要依托于Spring Boot的版本升級而升級,需要做兼容測試,很難的呀!
所屬專欄
【方向盤】-Spring Cloud新特性
相關下載
- 【本專欄源代碼】:https://github.com/yourbatman/FXP-java-ee
- 【技術專欄源代碼大本營】:https://github.com/yourbatman/tech-column-learning
- 【女媧Knife-Initializr工程】訪問地址:http://152.136.106.14:8761
- 【程序員專用網(wǎng)盤】公益上線啦,注冊送1G超小容量,幫你實踐做減法:https://wangpan.yourbatman.cn
- 【Java開發(fā)軟件包(Mac)】:https://wangpan.yourbatman.cn/s/rEH0 提取碼:javakit
版本約定
- Spring Framework 5.3.13
- Spring Boot 2.6.1
- Spring Cloud 2021.0.0
正文
Spring Cloud 2021.0.0版本的pom依賴:
- <dependencyManagement>
- <dependencies>
- <dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-dependencies</artifactId>
- <version>2021.0.0</version>
- <type>pom</type>
- <scope>import</scope>
- </dependency>
- </dependencies>
- </dependencyManagement>
值得注意的是,Spring Boot版本請使用2.6.1及以上,而非2.6.0。
尷尬不,這和Spring Cloud 2020.0.0依賴的最低Spring Boot版本為2.5.1而非2.5.0如出一轍。即使強如Spring技術團隊都會因為bug導致出現(xiàn)這種“對不齊”的現(xiàn)象,潔癖患者看著著實有點小難受有木有。所以,程序員平時多多寬容自己O(∩_∩)O
老生常談
關于Spring Cloud,每每都有些老生常談的議題,很基礎,但又不得不知,不得不提。
和Spring Boot的對應關系
Spring Cloud作為云計算框架,以Spring Boot作為基石,因此它和Spring Boot的版本對應關系非常重要。
這是官方給出的對應關系圖:
我把它整理為更為詳細的表格:
按目前節(jié)奏,Spring Boot每年發(fā)布2個中版本、一個大版本升級,Spring Cloud保持每年一次大版本升級的用以匹配節(jié)奏。
版本管理
Spring Cloud管理著眾多功能組件,整體上分為幾大類。從源碼處這里可以看出,以2021.0.0版本為例:
筆者制作成表格,方便你收藏:
模塊 | 版本 | 核心組件 |
spring-cloud-commons-dependencies | 3.1.0 | spring-cloud-commons spring-cloud-context spring-cloud-loadbalancer spring-cloud-starter |
spring-cloud-netflix-dependencies | 3.1.0 | spring-cloud-starter-netflix-eureka-client spring-cloud-starter-netflix-eureka-server |
spring-cloud-openfeign-dependencies | 3.1.0 | spring-cloud-starter-openfeign feign-bom:11.7 feign-form-spring:3.8.0 |
spring-cloud-gateway-dependencies | 3.1.0 | spring-cloud-gateway-webflux spring-cloud-gateway-mvc spring-cloud-gateway-server spring-cloud-starter-gateway |
spring-cloud-circuitbreaker-dependencies | 2.1.0 | resilience4j-bom:1.7.0 spring-cloud-starter-circuitbreaker-resilience4j spring-cloud-starter-circuitbreaker-reactor-resilience4j |
spring-cloud-config-dependencies | 3.1.0 | spring-cloud-starter-config spring-cloud-config-client spring-cloud-config-server spring-cloud-config-monitor |
spring-cloud-stream-dependencies | 3.2.1 | spring-cloud-stream spring-cloud-stream-binder-kafka-streams spring-cloud-starter-stream-rabbit |
spring-cloud-task-dependencies | 2.4.0 | spring-cloud-starter-task spring-cloud-task-batch spring-cloud-task-stream |
spring-cloud-consul-dependencies | 3.1.0 | spring-cloud-starter-consul spring-cloud-starter-consul-bus spring-cloud-starter-consul-config spring-cloud-starter-consul-discovery spring-cloud-starter-consul-all |
spring-cloud-sleuth-dependencies | 3.1.0 | spring-cloud-sleuth-brave spring-cloud-sleuth-zipki spring-cloud-starter-sleuth |
spring-cloud-zookeeper-dependencies | spring-cloud-zookeeper-config spring-cloud-zookeeper-discovery spring-cloud-starter-zookeeper-all |
|
spring-cloud-cloudfoundry-dependencies | 3.1.0 | spring-cloud-cloudfoundry-discovery spring-cloud-starter-cloudfoundry |
spring-cloud-contract-dependencies | 3.1.0 | spring-cloud-contract-wiremock spring-cloud-contract-spec spring-cloud-contract-spec-java< spring-cloud-contract-spec-kotlin spring-cloud-contract-stub-runner |
spring-cloud-function-dependencies | 3.2.1 | spring-cloud-function-context spring-cloud-starter-function-web spring-cloud-starter-function-webflux spring-cloud-function-deployer spring-cloud-function-adapter-aws spring-cloud-function-adapter-azure spring-cloud-function-adapter-gcp spring-cloud-function-adapter-openwhisk |
spring-cloud-vault-dependencies | 3.1.0 | spring-cloud-vault-config-aws spring-cloud-vault-config-consul spring-cloud-vault-config-database spring-cloud-vault-config-rabbitmq |
spring-cloud-kubernetes-dependencies | 3.1.0 | kubernetes-client-bom:5.9.0 io.kubernetes:client-java:13.0.0 io.kubernetes:client-java-spring-integration:13.0.0 istio-client spring-cloud-kubernetes-client-config spring-cloud-kubernetes-client-discovery spring-cloud-kubernetes-fabric8-istio spring-cloud-kubernetes-fabric8-loadbalancer spring-cloud-starter-kubernetes-fabric8-all |
spring-cloud-bus-dependencies | 3.1.0 | spring-cloud-starter-bus-amqp spring-cloud-starter-bus-kafka spring-cloud-starter-bus-stream |
發(fā)現(xiàn)沒,如果團隊正在使用kubernetes,那么spring-cloud-kubernetes也將是不錯的解決方案哦,類似于Netflix的全家桶嘛。
當前支持的版本
Pivotal公司(Spring的母公司)對核心產品有個OSS支持協(xié)議,簡而言之:主要版本提供3年支持,Spring Cloud作為Java領域云計算框架遵循了此協(xié)議。
當前支持的版本
發(fā)現(xiàn)沒,如果團隊正在使用kubernetes,那么spring-cloud-kubernetes也將是不錯的解決方案哦,類似于Netflix的全家桶嘛。
特別注意:這里指的主要版本才是3年,主要版本可不常有的哦
每每新版本發(fā)布,就會有一些老版本需要退位讓賢。2021.0.0版本已發(fā)布,各版本的官方支持情況如下:
- 2021.0版本:他不算一個主要版本,但作為2020.0這個主要版本的升級版,是當前最被推薦使用的
- 2020.0版本:他是一個主要版本。按計劃會支持到2023年12月份
- Hoxton版本:(支持Spring Boot 2.2.x和2.3.x)作為Finchley發(fā)行系列的一個次要版本,它的常規(guī)維護將持續(xù)到2021年6月底。從2020-07開始進入到特殊維護期(不加新功能,只改緊急bug),2021-12月底就只會發(fā)布重大錯誤/安全補丁了。2022-2-28徹底結束支持
- Greenwich版本 :(支持Spring Boot 2.1.x)2020-01就停止維護了,2020年過完就結束生命周期
- Finchley版本 :(支持Spring Boot 2.0.x)它是一個主要版本的開始,2018年發(fā)布,2021年過完生命周期也就結束了
更老版本 :嗯,忘了吧
新特性
作為主要版本2020.0.0的常規(guī)升級版本,這次動作肯定沒有上個版本那么大,稍微關注下即可。
Spring Cloud Commons
支持為每個Load-balancer(負載均衡器)配置參數(shù),相關代碼在LoadBalancerClientsProperties這里。
該特性同時也添加到了Gateway、Contract 和Openfeign項目中。
Spring Cloud Config
集成了AWS Secrets Manager、AWS Parameter Store 和 GCP Secret Manager。
這個沒啥好說的,畢竟我天朝里配置中心,真有使用Spring Cloud Config的嗎?
Spring Cloud Gateway
作為Spring Cloud非常非常亮眼、常用的組件,這個升級還是可圈可點的:功能更豐富了。
- 支持 Redis 路由存儲庫。也就是新增的RedisRouteDefinitionRepository這個實現(xiàn)類嘍
- 支持 HTTP 2。
- 支持 gRPC。
Spring Cloud Openfeign
支持@Cachable緩存注解,這個必須點贊,很方便很實用!
支持此新功能的核心API為:FeignCachingInvocationHandlerFactory,復用了Spring Cache的能力。
總結
本次Spring Cloud升級點并不多,可能刺激不到你的神級。但或許這也是好事呀,畢竟每次搞那么大的話,真升不動了,躺平走起。
Spring Cloud在2022年會發(fā)布2022.0.0版本,用來支持Spring Boot 3.0.0(基于Spring Framework 6.0),屆時會有非常非常大的變化,到時再見!