Spring Cloud Edgware新特性之三:使用配置屬性自定義Feign的行爲

Spring Cloud是當前煊赫一時的微服務開發框架。它的功能強大,組件豐富,設計優雅。目前Spring Cloud還在不斷髮展之中。git

Spring Cloud即將發佈Spring Cloud Edgware 版本。該版本解決了很多Bug,新增了很多新特性,本系列博客將爲你們詳細闡述在Spring Cloud Edgware中新增的特性。github

咱們知道:spring

  • Ribbon在Spring Cloud Brixton 版中,只能使用Java代碼自定義配置
  • Ribbon在Spring Cloud Camden 版中,可以使用Java代碼自定義配置,也可以使用配置屬性自 定義配置,二者等價。配置屬性配置的方式爲咱們帶來更好的使用體驗和開發效率。
  • Feign使用Java代碼自定義配置的方式跟Ribbon很是相似
  • 遺憾的是:在Spring Cloud Camden 中,Feign依然不支持使用配置屬性來自定義配置。

該遺憾已在Spring Cloud Edgware 獲得了填補——今後,Feign也支持配置屬性自定義配置啦!微信

下面咱們來看看如何使用配置屬性自定義Feign的行爲:框架

配置指定名稱的Feign Client微服務

對於一個指定名稱的Feign Client(例如該Feign Client的名稱爲feignName ):設計

feign:
  client:
    config:
      feignName:
        connectTimeout: 5000  # 至關於Request.Options
        readTimeout: 5000     # 至關於Request.Options
        # 配置Feign的日誌級別,至關於代碼配置方式中的Logger
        loggerLevel: full
        # Feign的錯誤解碼器,至關於代碼配置方式中的ErrorDecoder
        errorDecoder: com.example.SimpleErrorDecoder
        # 配置重試,至關於代碼配置方式中的Retryer
        retryer: com.example.SimpleRetryer
        # 配置攔截器,至關於代碼配置方式中的RequestInterceptor
        requestInterceptors:
          - com.example.FooRequestInterceptor
          - com.example.BarRequestInterceptor
        decode404: false

通用配置日誌

上面討論瞭如何配置特定名稱的Feign Client,那麼若是想爲全部的Feign Client都進行配置,該怎麼辦呢?咱們知道,@EnableFeignClients 註解上有個defaultConfiguration 屬性,咱們能夠將默認配置寫成一個類,而後用defaultConfiguration 來引用,例如:code

@EnableFeignClients(defaultConfiguration = DefaultRibbonConfig.class)

那麼若是想使用配置屬性該怎麼辦呢?開發

若是你想配置全部的Feign Client,只需像以下配置便可:

feign:
  client:
    config:
      default:
        connectTimeout: 5000
        readTimeout: 5000
        loggerLevel: basic

若是你不當心又使用了Java代碼配置Feign,同時又使用了配置屬性配置Feign,那麼使用配置屬性的優先級更高。配置屬性配置的方式將會覆蓋Java代碼配置。若是你想修改代碼配置方式的優先級,可以使用以下屬性:feign.client.default-to-properties=false 。

TIPS:

相關文章
相關標籤/搜索