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)文章
springboot使用之多個filter的執(zhí)行順序以及配置方式
這篇文章主要介紹了springboot使用之多個filter的執(zhí)行順序以及配置方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08Java?ServletContext與ServletConfig接口使用教程
ServletConfig對象,叫Servlet配置對象。主要用于加載配置文件的初始化參數(shù)。我們知道一個Web應(yīng)用里面可以有多個servlet,如果現(xiàn)在有一份數(shù)據(jù)需要傳給所有的servlet使用,那么我們就可以使用ServletContext對象了2022-09-09Spring Security動態(tài)權(quán)限的實現(xiàn)方法詳解
這篇文章主要和小伙伴們簡單介紹下 Spring Security 中的動態(tài)權(quán)限方案,以便于小伙伴們更好的理解 TienChin 項目中的權(quán)限方案,感興趣的可以了解一下2022-06-06Java實現(xiàn)一鍵獲取Mysql所有表字段設(shè)計和建表語句的工具類
這篇文章主要為大家詳細介紹了如何利用Java編寫一個工具類,可以實現(xiàn)一鍵獲取Mysql所有表字段設(shè)計和建表語句,感興趣的小伙伴可以了解一下2023-05-05