亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Spring Cloud Feign組成配置過程解析

 更新時間:2020年03月04日 11:00:37   作者:趙小胖0914  
這篇文章主要介紹了Spring Cloud Feign組成配置過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

Feign的組成

接口
作用
默認(rèn)值
Feign.Builder
Feign的入口
Feign.Builder
Client
Feign底層用什么去請求
和Ribbon配合時:LoadBalancerFeignClient
不和Ribbon配合時:Fgien.Client.Default
Contract
契約,注解支持
SpringMVCContract
Encoder
解碼器,用于將獨享轉(zhuǎn)換成HTTP請求消息體
SpringEncoder
Decoder
編碼器,將相應(yīng)消息體轉(zhuǎn)成對象
ResponseEntityDecoder
Logger
日志管理器
Slf4jLogger
RequestInterceptor
用于為每個請求添加通用邏輯(攔截器,例子:比如想給每個請求都帶上heared)

Feign的日記級別

日志級別
打印內(nèi)容
NONE(默認(rèn))
不記錄任何日志
BASIC
僅記錄請求方法,URL,響應(yīng)狀態(tài)代碼以及執(zhí)行時間(適合生產(chǎn)環(huán)境)
HEADERS
記錄BASIC級別的基礎(chǔ)上,記錄請求和響應(yīng)的header
FULL
記錄請求和弦ineader,body和元數(shù)據(jù)

首先如何整合Feign

遵循SpringBoot的三板斧第一步:加依賴

<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

第二步:寫注解

@EnableFeignClients //在啟動類上加

第三步:寫配置

如何給Feign添加日志級別

細(xì)粒度

方式一:代碼實現(xiàn)第一步:添加Feign配置類,可以添加在主類下,但是不用添加@Configuration。如果添加了@Configuration而且又放在了主類之下,那么就會所有Feign客戶端實例共享,同Ribbon配置類一樣父子上下文加載沖突;如果一定添加@Configuration,就放在主類加載之外的包。建議還是不用加@Configuration。

public class FeignConfig {
  @Bean
  public Logger.Level Logger() {
    return Logger.Level.FULL;
  }
}

第二步:給@FeignClient添加配置類

//@FeignClient configuration = GoodsFeignConfig.class 細(xì)粒度配置,指定配置類
@FeignClient(name = "goods", configuration = FeignConfig.class)

第四步:寫配置

logging:
 level:
  com.xxx.xxx.FeignAPI: DEBUG #需要將FeignClient接口全路徑寫上# 開啟日志 格式為logging.level. Feign客戶端路徑

方式二:配置屬性實現(xiàn)

feign:
 client:
  config:
   #想要調(diào)用的微服務(wù)名稱
   server-1:
    loggerLevel: FULL

全局配置

方式一:代碼實現(xiàn)添加了@Configuration放在了主類之下,那么就會所有Feign客戶端實例共享,同Ribbon配置類一樣父子上下文加載沖突;讓父子上下文ComponentScan重疊(強烈不建議)唯一正確方式

//在啟動類上為@EnableFeignClients注解添加defaultConfiguration配置
@EnableFeignClients(defaultConfiguration = FeignConfig.class)

方式二:配置屬性實現(xiàn)

feign:
 client:
  config:
   #將調(diào)用的微服務(wù)名稱改成default就配置成全局的了
   default:
    loggerLevel: FULL

Feign支持的配置項

代碼方式

配置項
作用
Logger.Level
指定日志級別
Retryer
指定重試策略
ErrorDecoder
指定錯誤解碼器
Request.Options
超時時間
Collection
攔截器
SetterFactory
用于設(shè)置Hystrix的配置屬性,F(xiàn)gien整合Hystrix才會用

配置屬性

feign:
 client:
  config:
   feignName:
    connectTimeout: 5000 # 相當(dāng)于Request.Optionsn 連接超時時間
    readTimeout: 5000   # 相當(dāng)于Request.Options 讀取超時時間
    loggerLevel: full   # 配置Feign的日志級別,相當(dāng)于代碼配置方式中的Logger
    errorDecoder: com.example.SimpleErrorDecoder # Feign的錯誤解碼器,相當(dāng)于代碼配置方式中的ErrorDecoder
    retryer: com.example.SimpleRetryer # 配置重試,相當(dāng)于代碼配置方式中的Retryer
    requestInterceptors: # 配置攔截器,相當(dāng)于代碼配置方式中的RequestInterceptor
     - com.example.FooRequestInterceptor
     - com.example.BarRequestInterceptor
    # 是否對404錯誤解碼
    decode404: false
    encode: com.example.SimpleEncoder
    decoder: com.example.SimpleDecoder
    contract: com.example.SimpleContract

Feign還支持對請求和響應(yīng)進(jìn)行GZIP壓縮,以提高通信效率,配置方式如下:

# 配置請求GZIP壓縮
feign.compression.request.enabled=true
# 配置響應(yīng)GZIP壓縮
feign.compression.response.enabled=true
# 配置壓縮支持的MIME TYPE
feign.compression.request.mime-types=text/xml,application/xml,application/json
# 配置壓縮數(shù)據(jù)大小的下限
feign.compression.request.min-request-size=2048

Ribbon配置 VS Feign配置

粒度
Ribbon
Feign
代碼局部
@RibbonClient(configuration=RibbonConfig.class),RibbonConfig類必須加@Configuration,且必須放在父上下文無法掃到的包下
@FeignClient(configuration=FeignConfig.class),F(xiàn)eignConfig類的@Configuration可以不加(可選),如果有,必須放在父上下文無法掃到的包下
代碼全局
@RibbonClients(defaultConfigurtion=RibbonConfig.class)
@EnableFeignClients(defaultConfiguration = FeignConfig.class)
...
配置屬性局部
.ribbon.NFLoadBalancerClassName
...
feign.client.config..loggerLevel 
...
配置屬性全局
feign.client.config.default.loggerLevel

Feign 代碼方式 VS 配置屬性方式

配置方式
有點
缺點
代碼配置
基于代碼,更加靈活
如果Feign的配置類加了@Configuration注解,需注意父子上下文,線上修改需要重打包,發(fā)布
屬性配置
易上手
配置更加直觀
線上修改無需重新打包,發(fā)布
優(yōu)先級更高
極端場景下沒有代碼配置更加靈活

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java畢業(yè)設(shè)計實戰(zhàn)之共享租車信息管理系統(tǒng)的實現(xiàn)

    Java畢業(yè)設(shè)計實戰(zhàn)之共享租車信息管理系統(tǒng)的實現(xiàn)

    這是一個使用了java+Jsp+Servlet+Jdbc+Mysql開發(fā)的共享租車信息管理系統(tǒng),是一個畢業(yè)設(shè)計的實戰(zhàn)練習(xí),具有租車管理該有的所有功能,感興趣的朋友快來看看吧
    2022-02-02
  • Java 異常java.lang.NoSuchFieldException解決方案

    Java 異常java.lang.NoSuchFieldException解決方案

    這篇文章主要介紹了Java 異常java.lang.NoSuchFieldException解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-10-10
  • Java 存儲模型和共享對象詳解

    Java 存儲模型和共享對象詳解

    這篇文章主要介紹了Java 存儲模型和共享對象詳解的相關(guān)資料,對Java存儲模型,可見性和安全發(fā)布的問題是起源于Java的存儲結(jié)構(gòu)及共享對象安全,需要的朋友可以參考下
    2017-03-03
  • Springboot攔截filter中異常的處理

    Springboot攔截filter中異常的處理

    SpringBoot提供了全局異常處理機制可以攔截所有異常,包括Filter中的異常,本文主要介紹了Springboot攔截filter中異常的處理,具有一定的參考價值,感興趣的可以了解一下
    2023-11-11
  • Kafka消費客戶端協(xié)調(diào)器GroupCoordinator詳解

    Kafka消費客戶端協(xié)調(diào)器GroupCoordinator詳解

    這篇文章主要為大家介紹了Kafka消費客戶端協(xié)調(diào)器GroupCoordinator使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • SpringBoot中整合JodConverter實現(xiàn)文件在線預(yù)覽功能

    SpringBoot中整合JodConverter實現(xiàn)文件在線預(yù)覽功能

    Spring Boot JodConverter是一個基于Spring Boot框架的文檔轉(zhuǎn)換工具,它使用JodConverter庫來實現(xiàn)文檔格式之間的轉(zhuǎn)換,本文主要介紹了SpringBoot中整合JodConverter實現(xiàn)文件在線預(yù)覽功能,需要的朋友可以參考下
    2024-04-04
  • 解決@CachePut設(shè)置的key值無法與@CacheValue的值匹配問題

    解決@CachePut設(shè)置的key值無法與@CacheValue的值匹配問題

    這篇文章主要介紹了解決@CachePut設(shè)置的key的值無法與@CacheValue的值匹配問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Java中Properties類的操作實例詳解

    Java中Properties類的操作實例詳解

    這篇文章主要介紹了Java中Properties類的操作實例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • java數(shù)據(jù)結(jié)構(gòu)之實現(xiàn)雙向鏈表的示例

    java數(shù)據(jù)結(jié)構(gòu)之實現(xiàn)雙向鏈表的示例

    這篇文章主要介紹了java數(shù)據(jù)結(jié)構(gòu)實現(xiàn)雙向鏈表的示例,需要的朋友可以參考下
    2014-03-03
  • SpringBoot使用@Async注解實現(xiàn)異步調(diào)用

    SpringBoot使用@Async注解實現(xiàn)異步調(diào)用

    這篇文章主要介紹了SpringBoot使用@Async注解實現(xiàn)異步調(diào)用,異步調(diào)用是相對于同步調(diào)用而言的,同步調(diào)用是指程序按預(yù)定順序一步步執(zhí)行,每一步必須等到上一步執(zhí)行完后才能執(zhí)行,異步調(diào)用則無需等待,程序執(zhí)行完即可執(zhí)行,可以減少程序執(zhí)行時間,需要的朋友可以參考下
    2023-10-10

最新評論