最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring Cloud Feign組成配置過(guò)程解析

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

Feign的組成

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

Feign的日記級(jí)別

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

首先如何整合Feign

遵循SpringBoot的三板斧第一步:加依賴(lài)

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

第二步:寫(xiě)注解

@EnableFeignClients //在啟動(dòng)類(lèi)上加

第三步:寫(xiě)配置

如何給Feign添加日志級(jí)別

細(xì)粒度

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

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

第二步:給@FeignClient添加配置類(lèi)

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

第四步:寫(xiě)配置

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

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

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

全局配置

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

//在啟動(dòng)類(lèi)上為@EnableFeignClients注解添加defaultConfiguration配置
@EnableFeignClients(defaultConfiguration = FeignConfig.class)

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

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

Feign支持的配置項(xiàng)

代碼方式

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

配置屬性

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

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

# 配置請(qǐng)求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類(lèi)必須加@Configuration,且必須放在父上下文無(wú)法掃到的包下
@FeignClient(configuration=FeignConfig.class),F(xiàn)eignConfig類(lèi)的@Configuration可以不加(可選),如果有,必須放在父上下文無(wú)法掃到的包下
代碼全局
@RibbonClients(defaultConfigurtion=RibbonConfig.class)
@EnableFeignClients(defaultConfiguration = FeignConfig.class)
...
配置屬性局部
.ribbon.NFLoadBalancerClassName
...
feign.client.config..loggerLevel 
...
配置屬性全局
無(wú) feign.client.config.default.loggerLevel

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

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

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

相關(guān)文章

  • SpringBoot項(xiàng)目中Date類(lèi)型數(shù)據(jù)在接口返回的時(shí)間不正確的問(wèn)題解決

    SpringBoot項(xiàng)目中Date類(lèi)型數(shù)據(jù)在接口返回的時(shí)間不正確的問(wèn)題解決

    如果接口返回的Date類(lèi)型時(shí)間與數(shù)據(jù)庫(kù)中datetime不一致,可能是由于沒(méi)有正確配置時(shí)區(qū)導(dǎo)致的,解決方法是在yaml配置文件中指定正確的日期格式和時(shí)區(qū)配置,修改配置并重啟項(xiàng)目后,可以獲得正確的時(shí)間,下面就來(lái)介紹一下
    2024-09-09
  • 一文掌握Spring中循環(huán)依賴(lài)與三級(jí)緩存

    一文掌握Spring中循環(huán)依賴(lài)與三級(jí)緩存

    這篇文章主要介紹了Spring中循環(huán)依賴(lài)與三級(jí)緩存,Spring通過(guò)三級(jí)緩存解決了循環(huán)依賴(lài),其中一級(jí)緩存為單例池,二級(jí)緩存為早期曝光對(duì)象earlySingletonObjects,三級(jí)緩存為早期曝光對(duì)象工廠(singletonFactories),本文結(jié)合實(shí)例代碼介紹的非常詳細(xì),需要的朋友參考下吧
    2023-09-09
  • Java對(duì)象的XML序列化與反序列化實(shí)例解析

    Java對(duì)象的XML序列化與反序列化實(shí)例解析

    這篇文章主要介紹了Java對(duì)象的XML序列化與反序列化實(shí)例解析,小編覺(jué)得還是挺不錯(cuò)的,這里分享給大家。
    2017-10-10
  • FactoryBean?BeanFactory方法使用示例詳解講解

    FactoryBean?BeanFactory方法使用示例詳解講解

    這篇文章主要為大家介紹了FactoryBean?BeanFactory方法使用示例詳解講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • mybatis-plus更新字段為null的處理方式

    mybatis-plus更新字段為null的處理方式

    這篇文章主要介紹了mybatis-plus更新字段為null的處理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • mybatis利用association或collection傳遞多參數(shù)子查詢(xún)

    mybatis利用association或collection傳遞多參數(shù)子查詢(xún)

    今天小編就為大家分享一篇關(guān)于mybatis利用association或collection傳遞多參數(shù)子查詢(xún),小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-03-03
  • 使用Java獲取linux和window序列號(hào)

    使用Java獲取linux和window序列號(hào)

    這篇文章主要為大家詳細(xì)介紹了如何使用Java獲取Windows和Linux系統(tǒng)上的CPU序列號(hào)、磁盤(pán)、mac地址等信息,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-01-01
  • java操作elasticsearch詳細(xì)方法總結(jié)

    java操作elasticsearch詳細(xì)方法總結(jié)

    elasticsearch是使用Java編寫(xiě)的一種開(kāi)源搜索引擎,也是一種分布式的搜索引擎架構(gòu),這篇文章主要給大家介紹了關(guān)于java操作elasticsearch的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-12-12
  • Spring對(duì)事務(wù)管理的支持

    Spring對(duì)事務(wù)管理的支持

    今天小編就為大家分享一篇關(guān)于Spring對(duì)事務(wù)管理的支持,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-01-01
  • 解決java字符串轉(zhuǎn)換成時(shí)間Unparseable date出錯(cuò)的問(wèn)題

    解決java字符串轉(zhuǎn)換成時(shí)間Unparseable date出錯(cuò)的問(wèn)題

    這篇文章主要介紹了解決java字符串轉(zhuǎn)換成時(shí)間Unparseable date出錯(cuò)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06

最新評(píng)論

文昌市| 易门县| 娄底市| 新建县| 普格县| 古田县| 邯郸市| 东方市| 安阳市| 浦江县| 深水埗区| 玉环县| 巨鹿县| 武山县| 日喀则市| 黄陵县| 方正县| 远安县| 隆林| 阳西县| 凌海市| 潍坊市| 高平市| 随州市| 保山市| 石嘴山市| 克什克腾旗| 达州市| 喀喇| 南澳县| 东乡| 新民市| 龙井市| 新巴尔虎左旗| 永济市| 东阿县| 抚顺市| 高邑县| 镇安县| 筠连县| 吉安市|