Spring Cloud Greenwich 新特性和F升级分享

33次阅读

共计 2149 个字符,预计需要花费 6 分钟才能阅读完成。

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

欢迎加我 Q2270033969,讨论 Spring Cloud ^_^

正文完
 0