共计 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 ^_^