feign name指定服務(wù)調(diào)用無效問題及解決
背景
在做三方的外接接口的時候,出現(xiàn)了非常奇怪的一個問題。
某個feign調(diào)用,必須使用 url 指定路徑才能做到訪問,因?yàn)槊髅魇褂?code>name屬性就可以指定服務(wù)了。
這就非常奇怪了~~~~
@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,而且項(xiàng)目使用了Eureka 、nacos或者ribbon,name屬性會作為微服務(wù)的名稱,用于服務(wù)發(fā)現(xiàn)。反之,只是一個名稱。此屬性和 spring.application.name 對應(yīng)。url:一般用于調(diào)試,作用是指定@FeignClient調(diào)用的API地址,而非從服務(wù)中心獲取。url和name都可以使用占位符,比如:@FeignClient(name = “your.feign.name",url="${your.feign.url}”);decode404:當(dāng)發(fā)生http 404錯誤時,如果該字段為true,會調(diào)用decoder進(jìn)行解碼;否則,拋出FeignException。configuration:Feign配置類,作用是自定義Feign的Encoder、Decoder、LogLevel、Contract。fallback:定義容錯的處理類,當(dāng)調(diào)用遠(yuǎn)程接口失敗或超時時,會調(diào)用對應(yīng)接口的容錯邏輯,fallback指定的類必須實(shí)現(xiàn)@FeignClient標(biāo)記的接口。fallbackFactory:工廠類,用于生成fallback類實(shí)例,實(shí)現(xiàn)每個接口通用的容錯邏輯,減少重復(fù)的代碼。path:定義當(dāng)前FeignClient的統(tǒng)一前綴。contextId:為某個接口設(shè)置單獨(dú)的超時,與與config里的屬性對應(yīng)。
原因
三方服務(wù)的配置文件里面加上了,前綴路徑
servlet:
context-path: /outer這就導(dǎo)致,feign調(diào)用時,拼接的路徑少了 一個前綴 /outer。
解決辦法
使用 path屬性,指定前綴。
@FeignClient(value = "outerService",path = "/outer",configuration = FeignConfig.class, fallbackFactory = OuterServiceFallbackFactory.class, decode404 = true)
總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
RestTemplate如何添加請求頭headers和請求體body
這篇文章主要介紹了RestTemplate如何添加請求頭headers和請求體body問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-07-07
Spring實(shí)戰(zhàn)之抽象Bean和子Bean定義與用法示例
這篇文章主要介紹了Spring實(shí)戰(zhàn)之抽象Bean和子Bean定義與用法,結(jié)合實(shí)例形式分析了Spring抽象Bean和子Bean相關(guān)配置、定義與使用操作技巧,需要的朋友可以參考下2019-11-11
FastJson時間格式化問題避坑經(jīng)驗(yàn)分享
這篇文章主要為大家介紹了FastJson時間格式化問題避坑經(jīng)驗(yàn)分享,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08
Java如何向Word模板中插入Base64圖片和數(shù)據(jù)信息
這篇文章主要介紹了Java如何向Word模板中插入Base64圖片和數(shù)據(jù)信息問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-07-07
Java使用JNDI連接數(shù)據(jù)庫的實(shí)現(xiàn)方法
本文主要介紹了Java使用JNDI連接數(shù)據(jù)庫的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-12-12
SpringBoot實(shí)現(xiàn)接口防抖的實(shí)戰(zhàn)方案大全
這篇文章主要介紹了四種在SpringBoot中實(shí)現(xiàn)接口防抖的方案,包括前端防抖+后端令牌鎖、數(shù)據(jù)庫唯一約束、本地Guava緩存和Token令牌機(jī)制,每種方案都有其優(yōu)缺點(diǎn),選擇時應(yīng)根據(jù)業(yè)務(wù)重要性和系統(tǒng)架構(gòu)來決定,需要的朋友可以參考下2025-12-12
Java的MyBatis框架項(xiàng)目搭建與hellow world示例
MyBatis框架為Java程序的數(shù)據(jù)庫操作帶來了很大的便利,這里我們就從最基礎(chǔ)的入手,來看一下Java的MyBatis框架項(xiàng)目搭建與hellow world示例,需要的朋友可以參考下2016-06-06

