Java Feign微服務(wù)接口調(diào)用方法詳細講解
Feign說明
Feign是一種聲明式、模板化的HTTP客戶端。在spring cloud中使用Feign,可以做到類似于普通的接口的請求調(diào)用,可以發(fā)現(xiàn)對應(yīng)的服務(wù)的接口,進而直接調(diào)用對應(yīng)服務(wù)中的接口。
引入依賴啟動類開啟客戶端
首先需要引入依賴
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
然后在啟動類中加入注解@EnableFeignClients ,開啟Feign客戶端。
Feign接口開發(fā)
然后在當前服務(wù)內(nèi)編寫Feign接口,接口與普通的controller層類似,只是在類上不需要寫@Controller等注解,只需要加上@Component 、 @FeignClient注解即可,下面的請求方法需要寫上@PostMapping(“/findList”)注解。如下:
@Component
@FeignClient(value = "sso", path = "/api/user", fallback = UserClientHystrix.class)
public interface UserClient {
/**
* 獲取對象集合
* @param object
* @return
*/
@PostMapping("/findList")
Result<UserDO> findList(@CustomJSONBody Object object);
}
編寫容錯類
容錯類主要是在調(diào)用對應(yīng)的服務(wù)接口時如果出現(xiàn)異常時的應(yīng)急措施,返回一個自定義結(jié)果。
@Component("userClientHystrix")
public class UserClientHystrix implements UserClient {
@Override
public Result<UserDO> findList(Object object) {
return Result.error("服務(wù)不可用!");
}
}
在業(yè)務(wù)層調(diào)用Feign客戶端接口
編寫好Feign客戶端接口后,就可以在本服務(wù)內(nèi)的業(yè)務(wù)層調(diào)用Feign的接口實現(xiàn)服務(wù)間的調(diào)用了。
@Resource
UserClient userClient;
public Result<List<UserDO>> findList(){
Map<String, String> map = new HashMap<>();
map.put("userNo", "1001");
return Result.success(userClient.findList(map).getData());
}
Feign的常用屬性如下
name:指定FeignClient的名稱,如果項目使用了Ribbon,name屬性會作為微服務(wù)的名稱,用于服務(wù)發(fā)現(xiàn)
url: url一般用于調(diào)試,可以手動指定@FeignClient調(diào)用的地址,如果指定了url地址后,會優(yōu)先調(diào)用url指定的地址
decode404:當發(fā)生http 404錯誤時,如果該字段位true,會調(diào)用decoder進行解碼,否則拋出FeignException
configuration: Feign配置類,可以自定義Feign的Encoder、Decoder、LogLevel、Contract
fallback: 定義容錯的處理類,當調(diào)用遠程接口失敗或超時時,會調(diào)用對應(yīng)接口的容錯邏輯,fallback指定的類必須實現(xiàn)@FeignClient標記的接口
fallbackFactory: 工廠類,用于生成fallback類示例,通過這個屬性我們可以實現(xiàn)每個接口通用的容錯邏輯,減少重復的代碼
path: 定義當前FeignClient的統(tǒng)一前綴,當我們項目中配置了server.context-path,server.servlet-path時使用
到此這篇關(guān)于Java Feign微服務(wù)接口調(diào)用方法詳細講解的文章就介紹到這了,更多相關(guān)Java Feign微服務(wù)接口調(diào)用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot3集成SLF4J+logback進行日志記錄的實現(xiàn)
本文主要介紹了SpringBoot3集成SLF4J+logback進行日志記錄的實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-01-01
spring利用squertz實現(xiàn)定時任務(wù)
spring squertz是一個強大的定時任務(wù)處理方式。下面這篇文章主要介紹了spring利用squertz實現(xiàn)定時任務(wù)的相關(guān)資料,文中介紹的很詳細,對大家具有一定的參考借鑒價值,需要的朋友們下面來一起看看吧。2017-01-01
JAVA開發(fā)中的一些規(guī)范講解(阿里巴巴Java開發(fā)規(guī)范手冊)
這篇文章主要介紹了JAVA開發(fā)中的一些規(guī)范講解(阿里巴巴Java開發(fā)規(guī)范手冊),需要的朋友可以參考下2018-04-04
Spring Boot+Jpa多數(shù)據(jù)源配置的完整步驟
這篇文章主要給大家介紹了關(guān)于Spring Boot+Jpa多數(shù)據(jù)源配置的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-01-01
SpringBoot中優(yōu)化if-else語句的七種方法
if-else語句是控制流程的基本工具,但過度使用會使代碼變得復雜且難以維護,在SpringBoot , SpringCloud項目中,優(yōu)化if-else結(jié)構(gòu)變得尤為重要,本文將深入探討七種策略,旨在減少SpringBoot , SpringCloud項目中 if-else的使用,需要的朋友可以參考下2024-07-07
Spring Controller接收前端JSON數(shù)據(jù)請求方式
這篇文章主要為大家介紹了Spring Controller接收前端JSON數(shù)據(jù)請求方式詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-07-07

