2019.01.23 期待已久的Spring Cloud Greenwich 發(fā)布了release版本蕾羊,作為我們團(tuán)隊(duì)也第一時(shí)間把RC版本替換為release,以下為總結(jié),希望對你使用Spring Cloud Greenwich 有所幫助
Greenwich 只支持 Spring Boot 2.1.x 分支。如果使用 2.0.x 請使用Finchley版本搔驼,
pom坐標(biāo)
主要是適配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 提供了新的存儲介質(zhì)
除了Git侈询、File舌涨、JDBC,新版本提供 在Cloud Foundry的CredHub存儲功能
spring:
profiles:
active: credhub
cloud:
config:
server:
credhub:
url: https://credhub:8844
Spring Cloud Gateway
支持整合OAuth2
這里提供了一個(gè)例子: Spring Cloud Gateway and Spring Security OAuth2
整合的時(shí)候有個(gè)坑可以參考這個(gè)issue:ReactiveManagementWebSecurityAutoConfiguration Prevent's oauth2Login from being defaulted
新增重寫響應(yīng)頭過濾器
spring:
cloud:
gateway:
routes:
- id: rewriteresponseheader_route
uri: http://example.org
filters:
- RewriteResponseHeader=X-Response-Foo, , password=[^&]+, password=***
Feign 的新特性和坑
@SpringQueryMap 對Get請求進(jìn)行了增強(qiáng)
- 終于解決這個(gè)問題了
- 不用直接使用OpenFeign新增的@QueryMap扔字,由于缺少value屬性 QueryMap注釋與Spring不兼容...
異常解決
對Spring Cloud Finchley 進(jìn)行直接升級時(shí)候發(fā)現(xiàn)feign啟動(dòng)報(bào)錯(cuò)了
***************************
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 后新增的屬性運(yùn)行bean 覆蓋,不要配置到配置中心里面革为,不然無效
- 第二種扭粱,就是把通過同一個(gè)服務(wù)調(diào)用的代碼,移動(dòng)到同一個(gè)@FeignClient中
- contextId ,這個(gè)是@FeignClient 新增的一個(gè)屬性
This will be used as the bean name instead of name if present, but will not be used as a service id.
就可以用這個(gè)屬性區(qū)分@FeigenClient 標(biāo)志的同一個(gè)service 的接口
總結(jié)
- Spring Cloud F -- > G 變化很小震檩,微乎其微主要是JAVA11的兼容
- 很遺憾沒有看到 Spring Cloud Alibaba 加油琢蛤。
- Spring Cloud LoadBalancer 還是老樣子蜓堕。目前來看暫時(shí)無法替代 ribbon
- 歡迎加我Q2270033969,討論Spring Cloud _