Spring Cloud Greenwich 新特性和F版升级分享
来源:https://dwz.cn/LkwPsmut
前几天介绍了,关于Spring Cloud Greenwich版本发布的官方博客翻译:Spring Cloud Greenwich.RELEASE 正式发布!一个非常有看头的版本!,今天我们一起学习一下来自“冷冷gg”大神的升级战报!
2019.01.23 期待已久的Spring Cloud Greenwich 发布了release版本,作为我们团队也第一时间把RC版本替换为release,以下为总结,希望对你使用Spring Cloud Greenwich 有所帮助 Greenwich 只支持 Spring Boot 2.1.x 分支。如果使用 2.0.x 请使用Finchley版本。
pom坐标
主要是适配JAVA11
<!--支持Spring Boot 2.1.X-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.1.2.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--Greenwich.RELEASE-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Greenwich.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
升级netflix版本,DiscoveryClient支持获取InstanceId
Spring Cloud Config 提供了新的存储介质
除了Git、File、JDBC,新版本提供 在Cloud Foundry的CredHub存储功能
spring:
profiles:
active: credhub
cloud:
config:
server:
credhub:
url: https://credhub:8844
Spring Cloud Gateway
支持整合OAuth2
这里提供了一个例子: Spring Cloud Gateway and Spring Security OAuth2
整合的时候有个坑可以参考这个issue:ReactiveManagementWebSecurityAutoConfiguration Prevent's oauth2Login from being defaulted
新增重写响应头过滤器
spring:
cloud:
gateway:
routes:
- id: rewriteresponseheader_route
uri: http://example.org
filters:
- RewriteResponseHeader=X-Response-Foo, , password=[^&]+, password=***
Feign的新特性和坑
@SpringQueryMap 对Get请求进行了增强
终于解决这个问题了
不用直接使用OpenFeign新增的@QueryMap,由于缺少value属性 QueryMap注释与Spring不兼容...
异常解决
对Spring Cloud Finchley 进行直接升级时候发现feign启动报错了
***************************
APPLICATION FAILED TO START
***************************
Description:
The bean 'pigx-upms-biz.FeignClientSpecification', defined in null, could not be registered. A bean with that name has already been defined in null and overriding is disabled.
Action:
Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-definition-overriding=true
Process finished with exit code 1
第一种粗暴的解决方法,异常日志中说明了,在
bootstrap.yml
中配置
spring.main.allow-bean-definition-overriding=true
这是Spring Boot 2.1 后新增的属性运行bean 覆盖,不要配置到配置中心里面,不然无效
第二种,就是把通过同一个服务调用的代码,移动到同一个@FeignClient中
contextId ,这个是@FeignClient 新增的一个属性
This will be used as the bean name instead of name if present, but will not be used as a service id.
就可以用这个属性区分@FeigenClient 标志的同一个service 的接口
总结
Spring Cloud F -- > G 变化很小,微乎其微主要是JAVA11的兼容
很遗憾没有看到 Spring Cloud Alibaba 加油。
Spring Cloud LoadBalancer 还是老样子。目前来看暂时无法替代 Ribbon
欢迎加冷冷gg的Q2270033969,讨论Spring Cloud
本号正在连载「 Spring Cloud Alibaba基础教程 」
Spring Cloud Alibaba基础教程:使用Nacos实现服务注册与发现
Spring Cloud Alibaba基础教程:Nacos 生产级版本 0.8.0
Spring Cloud Alibaba基础教程:几种服务消费方式(RestTemplate、WebClient、Feign)
Spring Cloud Alibaba基础教程:使用Nacos作为配置中心
更多内容关注我,近期持续更新!
号外:最近整理了之前编写的一系列 Spring Boot 内容,做成了《Spring Boot基础教程》的PDF,关注我并回复:001 领取,002 资源即将整理出炉,随后将陆续奉上,敬请期待
- END -
近期热文:
深度解密HTTP通信细节
用认知和人性来做最棒的程序员
Gitlab-CI持续集成的完整实践
“三次握手,四次挥手”你真的懂吗?
“拼多多”被薅的问题出在哪儿?损失将如何买单?
在前后端分离的路上承受了多少痛?看看这篇是否能帮到你?
你真的会高效的在GitHub上搜索开源项目吗?
中台是个什么鬼?
从业务到平台的思维转变
更多私货分享
欢迎加入「我的星球」
👇
看完,赶紧点个“好看”鸭
点鸭点鸭
↓↓↓↓