中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SpringCloud中如何使用Feign調用服務接口

發布時間:2021-09-29 14:47:48 來源:億速云 閱讀:174 作者:柒染 欄目:編程語言

本篇文章給大家分享的是有關SpringCloud中如何使用Feign調用服務接口,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

JAVA 項目中接口調用怎么做?

1)Httpclient

HttpClient 是 Apache Jakarta Common 下的子項目,用來提供高效的、最新的、功能豐富的支持 Http 協議的客戶端編程工具包,并且它支持 HTTP 協議最新版本和建議。

HttpClient 相比傳統 JDK 自帶的 URLConnection,提升了易用性和靈活性,使客戶端發送 HTTP 請求變得容易,提高了開發的效率。

2)Okhttp

一個處理網絡請求的開源項目,是安卓端最火的輕量級框架,由 Square 公司貢獻,用于替代 HttpUrlConnection 和 Apache HttpClient。OkHttp 擁有簡潔的 API、高效的性能,并支持多種協議(HTTP/2 和 SPDY)。

3)HttpURLConnection

HttpURLConnection 是 Java 的標準類,它繼承自 URLConnection,可用于向指定網站發送 GET 請求、POST 請求。HttpURLConnection 使用比較復雜,不像 HttpClient 那樣容易使用。

4)RestTemplate

RestTemplate 是 Spring 提供的用于訪問 Rest 服務的客戶端,RestTemplate 提供了多種便捷訪問遠程 HTTP 服務的方法,能夠大大提高客戶端的編寫效率。

上面介紹的是最常見的幾種調用接口的方法,我們下面要介紹的方法比上面的更簡單、方便,它就是 Feign。

Feign 是一個聲明式的 REST 客戶端,它能讓 REST 調用更加簡單。Feign 供了 HTTP 請求的模板,通過編寫簡單的接口和插入注解,就可以定義好 HTTP 請求的參數、格式、地址等信息。

而 Feign 則會完全代理 HTTP 請求,我們只需要像調用方法一樣調用它就可以完成服務請求及相關處理。

Spring Cloud 對 Feign 進行了封裝,使其支持 SpringMVC 標準注解和 HttpMessageConverters。Feign 可以與 Eureka 和 Ribbon 組合使用以支持負載均衡

在Spring Cloud中集成Feign

在 Spring Cloud 中集成 Feign 的步驟相當簡單,首先還是加入 Feign 的依賴,代碼如下所示。

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency>

在啟動類上加 @EnableFeignClients 注解,如果你的 Feign 接口定義跟你的啟動類不在同一個包名下,還需要制定掃描的包名 @EnableFeignClients(basePackages=“com.fangjia.api.client”),代碼如下所示。

@SpringBootApplication@EnableDiscoveryClient@EnableFeignClients(basePackages = "com.fangjia.api.client")
public class FshSubstitutionServiceApplication {public static void main(String[] args) {SpringApplication.run(FshSubstitutionServiceApplication.class, args);
    }
}

使用Feign調用接口

定義一個 Feign 的客戶端,以接口形式存在,代碼如下所示。

@FeignClient(value = "eureka-client-user-service")public interface UserRemoteClient {@GetMapping("/user/hello")String hello();
}

首先我們來看接口上加的 @FeignClient 注解。這個注解標識當前是一個 Feign 的客戶端,value 屬性是對應的服務名稱,也就是你需要調用哪個服務中的接口。

定義方法時直接復制接口的定義即可,當然還有另一種做法,就是將接口單獨抽出來定義,然后在 Controller 中實現接口。

在調用的客戶端中也實現了接口,從而達到接口共用的目的。我這里的做法是不共用的,即單獨創建一個 API Client 的公共項目,基于約定的模式,每寫一個接口就要對應寫一個調用的 Client,后面打成公共的 jar,這樣無論是哪個項目需要調用接口,只要引入公共的接口 SDK jar 即可,不用重新定義一遍了。

定義之后可以直接通過注入 UserRemoteClient 來調用,這對于開發人員來說就像調用本地方法一樣。

接下來采用 Feign 來調用 /user/hello 接口,代碼如下所示。

@Autowired
private UserRemoteClient userRemoteClient;

@GetMapping("/callHello")
public String callHello() {//return restTemplate.getForObject("http://localhost:8083/house/hello",String.class);//String result = restTemplate.getForObject("http://eureka-client-user-service/user/hello",String.class);String result = userRemoteClient.hello();
    System.out.println("調用結果:" + result);return result;
}

通過跟注釋掉的代碼相比可以發現,我們的調用方式變得越來越簡單了,從最開始的指定地址,到后面通過 Eureka 中的服務名稱來調用,再到現在直接通過定義接口來調用。

以上就是SpringCloud中如何使用Feign調用服務接口,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

鄂托克前旗| 宁海县| 徐水县| 寿阳县| 亚东县| 开江县| 沭阳县| 大新县| 化隆| 甘孜县| 汝南县| 西平县| 马尔康县| 沧源| 吴堡县| 益阳市| 古浪县| 永康市| 论坛| 福海县| 闵行区| 柳林县| 鱼台县| 甘洛县| 麟游县| 婺源县| 新泰市| 奉化市| 兰坪| 烟台市| 扶风县| 富源县| 沙田区| 双流县| 安吉县| 青阳县| 镇远县| 察雅县| 绥江县| 拜城县| 南开区|