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