其他分享
首页 > 其他分享> > 【方向盘】Spring Cloud 2021.0.0正式发布,FeignClient调用结果可一键缓存

【方向盘】Spring Cloud 2021.0.0正式发布,FeignClient调用结果可一键缓存

作者:互联网

在这里插入图片描述

盛年不重来,一日难再晨。
本文已被https://yourbatman.cn收录;女娲Knife-Initializr工程可公开访问啦;程序员专用网盘https://wangpan.yourbatman.cn;技术专栏源代码大本营:https://github.com/yourbatman/tech-column-learning;公号后台回复“专栏列表”获取全部小而美的原创技术专栏

你好,我是方向盘(YourBatman)。笔者的公号是保留地,只分享原创,不转载、不发商务广告!

✍前言

北京时间2021-12-01,Spring Cloud 2021.0.0正式发布。话说,2021年都快过完了呀,怎么才第一个版本呢?如果对比去年2020.0.0版本发布时间是2020-12-22的话,发现还是有“进步”的哈。

【方向盘】Spring Cloud 2020.0.0正式发布,再见了Netflix

其实,Spring Cloud的发版速度慢是必然的,因为它下面的子项目实在太多了,并不像Spring Boot那样来得纯粹很好掌控。每个子项目都有自己的发版节奏,Spring Cloud协调融合在一起,还要依托于Spring Boot的版本升级而升级,需要做兼容测试,很难的呀!

所属专栏

相关下载

版本约定

✍正文

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导致出现这种“对不齐”的现象,洁癖患者看着着实有点小难受有木有。所以,程序员平时多多宽容自己O(∩_∩)O

老生常谈

关于Spring Cloud,每每都有些老生常谈的议题,很基础,但又不得不知,不得不提。

✌和Spring Boot的对应关系

Spring Cloud作为云计算框架,以Spring Boot作为基石,因此它和Spring Boot的版本对应关系非常重要

这是官方给出的对应关系图:
在这里插入图片描述
我把它整理为更为详细的表格:

Release Train发布时间Spring Boot版本SC Commons版本
2021.0.x2021-122.6.x3.1.0
2020.0.x2020-122.4.x,2.5.x(从2020.0.3起)3.0.0
Hoxton2019-072.2.x, 2.3.x (从SR5起)2.2.x
Greenwich2018-112.1.x2.1.x
Finchley2017-102.0.x2.0.x
Edgware2017-081.5.x1.3.x
Dalston2017-051.5.x1.2.x
Brixton2016-091.3.x1.1.x
Angel2016-051.2.x1.0.x

按目前节奏,Spring Boot每年发布2个中版本、一个大版本升级,Spring Cloud保持每年一次大版本升级的用以匹配节奏。

✌版本管理

Spring Cloud管理着众多功能组件,整体上分为几大类。从源码处这里可以看出,以2021.0.0版本为例:
在这里插入图片描述
笔者制作成表格,方便你收藏:

模块版本核心组件
spring-cloud-commons-dependencies3.1.0spring-cloud-commons
spring-cloud-context
spring-cloud-loadbalancer
spring-cloud-starter
spring-cloud-netflix-dependencies3.1.0spring-cloud-starter-netflix-eureka-client
spring-cloud-starter-netflix-eureka-server
spring-cloud-openfeign-dependencies3.1.0spring-cloud-starter-openfeign
feign-bom:11.7
feign-form-spring:3.8.0
spring-cloud-gateway-dependencies3.1.0spring-cloud-gateway-webflux
spring-cloud-gateway-mvc
spring-cloud-gateway-server
spring-cloud-starter-gateway
spring-cloud-circuitbreaker-dependencies2.1.0resilience4j-bom:1.7.0
spring-cloud-starter-circuitbreaker-resilience4j
spring-cloud-starter-circuitbreaker-reactor-resilience4j
spring-cloud-config-dependencies3.1.0spring-cloud-starter-config
spring-cloud-config-client
spring-cloud-config-server
spring-cloud-config-monitor
spring-cloud-stream-dependencies3.2.1spring-cloud-stream
spring-cloud-stream-binder-kafka-streams
spring-cloud-starter-stream-rabbit
spring-cloud-task-dependencies2.4.0spring-cloud-starter-task
spring-cloud-task-batch
spring-cloud-task-stream
spring-cloud-consul-dependencies3.1.0spring-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-dependencies3.1.0spring-cloud-sleuth-brave
spring-cloud-sleuth-zipki
spring-cloud-starter-sleuth
spring-cloud-zookeeper-dependenciesspring-cloud-zookeeper-config
spring-cloud-zookeeper-discovery
spring-cloud-starter-zookeeper-all
spring-cloud-cloudfoundry-dependencies3.1.0spring-cloud-cloudfoundry-discovery
spring-cloud-starter-cloudfoundry
spring-cloud-bus-dependencies3.1.0spring-cloud-starter-bus-amqp
spring-cloud-starter-bus-kafka
spring-cloud-starter-bus-stream
spring-cloud-contract-dependencies3.1.0spring-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-dependencies3.2.1spring-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-dependencies3.1.0spring-cloud-vault-config-aws
spring-cloud-vault-config-consul
spring-cloud-vault-config-database
spring-cloud-vault-config-rabbitmq
spring-cloud-kubernetes-dependencies3.1.0kubernetes-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

发现没,如果团队正在使用kubernetes,那么spring-cloud-kubernetes也将是不错的解决方案哦,类似于Netflix的全家桶嘛。

✌当前支持的版本

Pivotal公司(Spring的母公司)对核心产品有个OSS支持协议,简而言之:主要版本提供3年支持,Spring Cloud作为Java领域云计算框架遵循了此协议。

特别注意:这里指的主要版本才是3年,主要版本可不常有的哦

每每新版本发布,就会有一些老版本需要退位让贤。2021.0.0版本已发布,各版本的官方支持情况如下:

新特性

作为主要版本2020.0.0的常规升级版本,这次动作肯定没有上个版本那么大,稍微关注下即可。

✌Spring Cloud Commons

支持为每个Load-balancer(负载均衡器)配置参数,相关代码在LoadBalancerClientsProperties这里。
在这里插入图片描述
该特性同时也添加到了Gateway、Contract 和Openfeign项目中。

✌Spring Cloud Config

集成了AWS Secrets Manager、AWS Parameter Store 和 GCP Secret Manager。

这个没啥好说的,毕竟我天朝里配置中心,真有使用Spring Cloud Config的吗?

✌Spring Cloud Gateway

作为Spring Cloud非常非常亮眼、常用的组件,这个升级还是可圈可点的:功能更丰富了。

✌Spring Cloud Openfeign

支持@Cachable缓存注解,这个必须点赞,很方便很实用!

支持此新功能的核心API为:FeignCachingInvocationHandlerFactory,复用了Spring Cache的能力。

✍总结

本次Spring Cloud升级点并不多,可能刺激不到你的神级。但或许这也是好事呀,毕竟每次搞那么大的话,真升不动了,躺平走起。
在这里插入图片描述
Spring Cloud在2022年会发布2022.0.0版本,用来支持Spring Boot 3.0.0(基于Spring Framework 6.0),届时会有非常非常大的变化,到时再见!

本专栏上下文

推荐阅读

在这里插入图片描述

我是方向盘(YourBatman):一个前25年还不会写Hallo World、早已毕业的大龄程序员。网瘾失足、清考、延期毕业、房产中介、保险销售、送外卖…是我不可抹灭的黑标签