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

使用FeignClient調(diào)用遠(yuǎn)程服務(wù)時整合本地的實現(xiàn)方法

 更新時間:2022年03月07日 16:13:35   作者:54powerman  
這篇文章主要介紹了使用FeignClient調(diào)用遠(yuǎn)程服務(wù)時整合本地的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

FeignClient調(diào)用遠(yuǎn)程服務(wù)時整合本地

包裝一個用戶服務(wù),一部分功能需要調(diào)用遠(yuǎn)程服務(wù),而另一部分功能調(diào)用本地方法,如:

@FeignClient(value="USER-SERVICE")
public interface RemoteUserService{
? @GetMapping("getUserByUserId")
? public User getUserByUserId(String userId);
}
public interface LocalUserService{
? public String getUserId();
}
@Service
public class LocalUserServiceImpl implements LocalUserService{
? @Autowired
? private HttpServletRequest request;
? public String getUserId(){
? ? return (String)request.getSession().getAttribute("user-id");
? }
}

為了簡化篇幅,并沒有處理異常。

當(dāng)使用者使用這兩個用戶相關(guān)的服務(wù),就需要自動裝載兩個Service:

@Autowired
private LocalUserService localUserService;
@Autowired
private RemoteUserService remoteUserService;

能不能簡化一下呢?將兩個服務(wù)整合。

嘗試將本地方法加入Feign接口

@FeignClient(value="USER-SERVICE",fallback=UserServiceHystrix.class)
public interface UserService{
? @GetMapping("getUserByUserId")
? public User getUserByUserId(String userId);
? public String getUserId();
}
@Service
public class UserServiceHystrix implements UserService{
? @Autowired
? private HttpServletRequest request;
? public User getUserByUserId(String userId){
? ? return null;
? }
? public String getUserId(){
? ? return (String)request.getSession().getAttribute("user-id");
? }
}

Fail:

測試發(fā)現(xiàn),UserService 接口中定義本地方法 getUserId() 編譯器直接報錯了,要求必須有Mapping注解。

嘗試通過實現(xiàn)兩個接口

換一個思路,回到最初,在熔斷器中實現(xiàn)兩個接口:

@FeignClient(value="USER-SERVICE",fallback=UserServiceHystrix.class)
public interface UserService{
? @GetMapping("getUserByUserId")
? public User getUserByUserId(String userId);
}
public interface LocalUserService extends RemoteUserService{
? public String getUserId();
}
@Service
public class UserServiceHystrix implements LocalUserService,RemoteUserService{
? @Autowired
? private HttpServletRequest request;
? public User getUserByUserId(String userId){
? ? return null;
? }
? public String getUserId(){
? ? return (String)request.getSession().getAttribute("user-id");
? }
}

Fail:

測試發(fā)現(xiàn),本地方法正常,遠(yuǎn)程方法根本無效,好像就是一個本地方法,直接走到了熔斷方法中。

IS -> HAS

讓 RemoteUserService is LocalUserService 既然不行,那么就試試讓 LocalUserService has RemoteUserService。

@FeignClient(value="USER-SERVICE",fallback=UserServiceHystrix.class)
public interface UserService{
? @GetMapping("getUserByUserId")
? public User getUserByUserId(String userId);
}
public interface LocalUserService extends RemoteUserService{
? public String getUserId();
}
@Service
public class UserServiceImpl implements LocalUserService,RemoteUserService{
? @Autowired
? private HttpServletRequest request;
? @Autowire
? private RemoteUserService remoteUserService;
? public User getUserByUserId(String userId){
? ? return remoteUserService.getUserByUserId(userId);
? }
? public String getUserId(){
? ? return (String)request.getSession().getAttribute("user-id");
? }
}

SUCCESS:

這樣是可以的。編碼時稍微麻煩了一點,使用時就清晰多了。

FeignClient服務(wù)之間調(diào)用

服務(wù)A需調(diào)用服務(wù)B的test方法

B服務(wù)不動

A:

最好新建一個server

@Component
@FeignClient(value = "tools")
public interface ServiceAFeignClient {
?? ?@RequestMapping(value = "/hi")
? ? String test();
}

tools為服務(wù)B配置中的spring.application.name,  hi為B中Controller的接口

然后A中代碼調(diào)用新建的server的接口即可,可能會出錯

com.netflix.client.ClientException: Load balancer does not have available server for client

A的application配置加

ribbon:
? eureka:
? ? enabled: true

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java中HashMap和HashSet的高效使用技巧分享

    Java中HashMap和HashSet的高效使用技巧分享

    這篇文章主要為大家詳細(xì)介紹了Java中HashMap和HashSet的高效使用技巧,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-03-03
  • Java中的LinkedList集合詳解

    Java中的LinkedList集合詳解

    這篇文章主要介紹了Java中的LinkedList集合詳解,  LinkedList 是一個雙向鏈表結(jié)構(gòu)(JDK1.6 之前為循環(huán)鏈表,JDK1.7 取消了循環(huán)),在任意位置插入刪除都很方便,但是不支持隨機取值,每次都只能從一端開始遍歷,直到找到查詢的對象,然后返回,需要的朋友可以參考下
    2023-09-09
  • feign調(diào)用返回object類型轉(zhuǎn)換方式

    feign調(diào)用返回object類型轉(zhuǎn)換方式

    這篇文章主要介紹了feign調(diào)用返回object類型轉(zhuǎn)換方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Eclipse配置使用web.xml的方法

    Eclipse配置使用web.xml的方法

    這篇文章主要為大家詳細(xì)介紹了Eclipse配置使用web.xml的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • 如何基于Autowired對構(gòu)造函數(shù)進(jìn)行注釋

    如何基于Autowired對構(gòu)造函數(shù)進(jìn)行注釋

    這篇文章主要介紹了如何基于Autowired對構(gòu)造函數(shù)進(jìn)行注釋,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-10-10
  • 解決2022.3.1版本中?IDEA中?XML文件提示屎黃色背景的方法

    解決2022.3.1版本中?IDEA中?XML文件提示屎黃色背景的方法

    這篇文章主要介紹了解決2022.3.1版本中?IDEA中?XML文件屎黃色背景?的方法,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-01-01
  • 詳解Kotlin:forEach也能break和continue

    詳解Kotlin:forEach也能break和continue

    這篇文章主要介紹了詳解Kotlin:forEach也能break和continue的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • springBoot項目中的static和templates文件夾的使用

    springBoot項目中的static和templates文件夾的使用

    本文主要介紹了springBoot項目中的static和templates文件夾的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-07-07
  • Java數(shù)組的定義、初始化、及二維數(shù)組用法分析

    Java數(shù)組的定義、初始化、及二維數(shù)組用法分析

    這篇文章主要介紹了Java數(shù)組的定義、初始化、及二維數(shù)組用法,結(jié)合具體實例形式分析了java數(shù)組概念、功能、數(shù)組定義、靜態(tài)數(shù)組、動態(tài)數(shù)組、二維數(shù)組等相關(guān)使用技巧,需要的朋友可以參考下
    2019-01-01
  • springboot項目部署到k8s上的方法步驟

    springboot項目部署到k8s上的方法步驟

    本文主要介紹了springboot項目部署到k8s上的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05

最新評論

惠来县| 盐城市| 桂平市| 财经| 区。| 光山县| 荥阳市| 资源县| 宝丰县| 望城县| 遂宁市| 嘉荫县| 西城区| 望谟县| 灵石县| 广东省| 五峰| 旌德县| 文安县| 怀化市| 阿拉善右旗| 甘肃省| 梁河县| 长治市| 无为县| 邳州市| 尖扎县| 金坛市| 龙泉市| 浑源县| 大兴区| 高州市| 庆安县| 阜阳市| 红河县| 盘锦市| 新乡县| 红安县| 中山市| 汨罗市| 黑水县|