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

作者: 冷冷zz | 来源:发表于2019-01-24 18:53 被阅读11次

    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

    image

    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请求进行了增强

    image
    1. 终于解决这个问题了
    2. 不用直接使用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
    
    1. 第一种粗暴的解决方法,异常日志中说明了,在 bootstrap.yml中配置
    spring.main.allow-bean-definition-overriding=true
    

    这是Spring Boot 2.1 后新增的属性运行bean 覆盖,不要配置到配置中心里面,不然无效

    1. 第二种,就是把通过同一个服务调用的代码,移动到同一个@FeignClient中
    2. 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 的接口

    总结

    1. Spring Cloud F -- > G 变化很小,微乎其微主要是JAVA11的兼容
    2. 很遗憾没有看到 Spring Cloud Alibaba 加油。
    3. Spring Cloud LoadBalancer 还是老样子。目前来看暂时无法替代 ribbon
    4. 欢迎加我Q2270033969,讨论Spring Cloud _

    相关文章

      网友评论

        本文标题:Spring Cloud Greenwich 新特性和F升级分享

        本文链接:https://www.haomeiwen.com/subject/ktpujqtx.html