feign name指定服務調用無效問題及解決
更新時間:2024年11月11日 14:40:50 作者:二掌柜,酒來!
文章主要介紹了FeignClient注解的常用屬性,并通過一個具體的例子說明了為什么某個Feign調用需要使用url指定路徑才能訪問,最后,文章給出了解決辦法,即使用path屬性指定前綴
背景
在做三方的外接接口的時候,出現(xiàn)了非常奇怪的一個問題。
某個feign調用,必須使用 url 指定路徑才能做到訪問,因為明明使用name屬性就可以指定服務了。
這就非常奇怪了~~~~
@FeignClient(name = "outerService", url = "${third.url}",configuration = FeignConfig.class, fallbackFactory = OuterServiceFallbackFactory.class)
// @FeignClient(value = "outerService",configuration = FeignConfig.class, fallbackFactory = OuterServiceFallbackFactory.class, decode404 = true)
@Service
public interface outerServiceClientFeign extends BafooCommonApi {
}漲知識了
聲明接口時在代碼中通過@Resource注入容器之后即可使用。
@FeignClient注解的常用屬性如下:
value/name:value和name的作用一樣,用于指定FeignClient的名稱;如果沒有配置url,而且項目使用了Eureka 、nacos或者ribbon,name屬性會作為微服務的名稱,用于服務發(fā)現(xiàn)。反之,只是一個名稱。此屬性和 spring.application.name 對應。url:一般用于調試,作用是指定@FeignClient調用的API地址,而非從服務中心獲取。url和name都可以使用占位符,比如:@FeignClient(name = “your.feign.name",url="${your.feign.url}”);decode404:當發(fā)生http 404錯誤時,如果該字段為true,會調用decoder進行解碼;否則,拋出FeignException。configuration:Feign配置類,作用是自定義Feign的Encoder、Decoder、LogLevel、Contract。fallback:定義容錯的處理類,當調用遠程接口失敗或超時時,會調用對應接口的容錯邏輯,fallback指定的類必須實現(xiàn)@FeignClient標記的接口。fallbackFactory:工廠類,用于生成fallback類實例,實現(xiàn)每個接口通用的容錯邏輯,減少重復的代碼。path:定義當前FeignClient的統(tǒng)一前綴。contextId:為某個接口設置單獨的超時,與與config里的屬性對應。
原因
三方服務的配置文件里面加上了,前綴路徑
servlet:
context-path: /outer這就導致,feign調用時,拼接的路徑少了 一個前綴 /outer。
解決辦法
使用 path屬性,指定前綴。
@FeignClient(value = "outerService",path = "/outer",configuration = FeignConfig.class, fallbackFactory = OuterServiceFallbackFactory.class, decode404 = true)
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
springboot動態(tài)加載jar包動態(tài)配置實例詳解
這篇文章主要給大家介紹了關于springboot動態(tài)加載jar包動態(tài)配置的相關資料,在項目開發(fā)的過程中,有時候需要動態(tài)靈活的加載某個jar包并執(zhí)行其里面的方法的時候,需要的朋友可以參考下2023-11-11
微服務實戰(zhàn)之怎樣提升springboot服務吞吐量
這篇文章主要介紹了微服務實戰(zhàn)之怎樣提升springboot服務吞吐量方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08

