我的世界做披風(fēng)網(wǎng)站友情鏈接檢測(cè)的特點(diǎn)
@FeignClient注解中的configuration屬性就是設(shè)置相關(guān)配置,但是這個(gè)屬性寫(xiě)的非常的不好,而且在它的注釋中也沒(méi)有寫(xiě)全,所以本文記錄一下,當(dāng)我們的代碼如下時(shí):
@FeignClient(name = "xxx", configuration = Abc.class)
@FeignClient(name = "zzz")
其中這個(gè)Abc就是xxx這個(gè)client的配置類(lèi),不是zzz的配置類(lèi),所以對(duì)于zzz來(lái)說(shuō),Abc里的內(nèi)容不會(huì)生效,那么Abc里都有哪些對(duì)象可以被認(rèn)為是配置信息呢?根據(jù)實(shí)操,Abc這個(gè)類(lèi)中,返回如下lite model是被feign認(rèn)可的,它們分別是
RequestInterceptor:用于在發(fā)送請(qǐng)求前攔截并修改請(qǐng)求,例如添加或修改HTTP頭信息
Decoder:用于將HTTP響應(yīng)體解碼為Java對(duì)象。Feign默認(rèn)提供了ResponseEntityDecoder,但你可以自定義解碼器來(lái)處理特定的響應(yīng)格式
Encoder:用于將Java對(duì)象編碼為HTTP請(qǐng)求體。Feign默認(rèn)提供了SpringEncoder,但你也可以創(chuàng)建自己的編碼器來(lái)處理特殊的需求
Contract:用于將Feign的接口方法映射為HTTP請(qǐng)求。Feign默認(rèn)提供了SpringMvcContract,它支持Spring MVC的注解
Logger.Level:用于配置Feign的日志級(jí)別
Logger:用于自定義Feign的日志記錄器
Client:用于發(fā)送HTTP請(qǐng)求。Feign默認(rèn)使用Client.Default,但你可以替換為例如ApacheHttpClient、OkHttpClient等
Retryer:用于配置重試策略。Feign默認(rèn)提供了Retryer.Default,但你可以自定義重試邏輯
ErrorDecoder:用于解碼HTTP響應(yīng)中的錯(cuò)誤。Feign默認(rèn)提供了ErrorDecoder.Default,但你可以自定義錯(cuò)誤解碼器來(lái)處理特定的錯(cuò)誤情況
Options:用于配置Feign的底層請(qǐng)求選項(xiàng),如連接超時(shí)、讀取超時(shí)等
SetterFactory:用于創(chuàng)建Feign請(qǐng)求模板的setter方法。這通常不需要自定義,但在某些高級(jí)場(chǎng)景中可能有用
InvocationHandlerFactory:用于創(chuàng)建Feign的InvocationHandler。這也不常需要自定義,但在某些特定情況下可能有用
例如我要對(duì)xxx的client定義一個(gè)攔截器,每次發(fā)送請(qǐng)求的時(shí)候都往header里加點(diǎn)東西,那么我們可以在Abc這個(gè)類(lèi)中這樣寫(xiě):
@Configuration
public class Abc{// 這個(gè)RequestInterceptor 類(lèi)會(huì)被feign識(shí)別并配置,因?yàn)閷?shí)現(xiàn)了RequestInterceptor 接口,// 而這個(gè)接口恰好是上述列表中的接口,所以這個(gè)配置自動(dòng)生效@Beanpublic RequestInterceptor headerInterceptor() {return new HeaderInterceptor();}public static class HeaderInterceptor implements RequestInterceptor {@Overridepublic void apply(RequestTemplate template) {template.header("key1", "value1");}}
}
好了,本文就到這里,重點(diǎn)就是配置類(lèi)中都有哪些Bean類(lèi)型,也就是本文上述那個(gè)配置信息列表,至于這些接口怎么樣網(wǎng)上多的是,本文只是為了擬補(bǔ)@FeignClient文檔中的不足,所以我們不知道有哪些Bean類(lèi)型