SpringCloud?openfeign聲明式服務(wù)調(diào)用實(shí)現(xiàn)方法介紹
一、介紹
OpenFeign是一種聲明式、模板化的HTTP客戶端(僅在Application Client中使用)(稱OpenFeign作用:聲明式服務(wù)調(diào)用)。聲明式調(diào)用是指,就像調(diào)用本地方法一樣調(diào)用遠(yuǎn)程方法,無需感知操作遠(yuǎn)程http請(qǐng)求。OpenFeign替換RestTemplate。
二、使用
(1)導(dǎo)入依賴
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.12.RELEASE</version>
</parent>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR12</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
</dependencies>(2)在啟動(dòng)類上添加掃描注解
/**
* EnableFeignClients - 開啟Openfeign技術(shù)。讓spring cloud掃描Openfeign相關(guān)注解,
* 生成動(dòng)態(tài)代理實(shí)現(xiàn)對(duì)象。
* 可選屬性 basePackages = {"feign接口所在包1", "feign接口所在包2"}
* 默認(rèn)掃描當(dāng)前類型所在包,及所有子孫包。
*/
@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients(basePackages = {"com.bjsxt.feign"})
public class OpenFeignAppClientApp {
public static void main(String[] args) {
SpringApplication.run(OpenFeignAppClientApp.class, args);
}
}
(3)編寫本地接口
/**
* 定義接口,基于注解,實(shí)現(xiàn)聲明式遠(yuǎn)程服務(wù)調(diào)用。
* 技術(shù)是OpenFeign。
* 需要確定的事情:
* 1. 訪問的遠(yuǎn)程服務(wù)名稱是什么。
* 2. 訪問的遠(yuǎn)程服務(wù)具體地址是什么。
* 3. 訪問的遠(yuǎn)程服務(wù)請(qǐng)求方式是什么。
* 4. 訪問的遠(yuǎn)程服務(wù),參數(shù)是什么。
* 5. 訪問的遠(yuǎn)程服務(wù),返回結(jié)果類型是什么。
*
* FeignClient - 代表當(dāng)前的接口是一個(gè)OpenFeign客戶端,要訪問遠(yuǎn)程的服務(wù)。
* 具體的實(shí)現(xiàn)類對(duì)象,由spring cloud動(dòng)態(tài)生成代理對(duì)象來實(shí)現(xiàn)。
* 必要屬性: value - 要訪問的遠(yuǎn)程服務(wù)命名是什么。
*/
@FeignClient("application-service")
public interface AppServiceOpenfeignClient {
/**
* 定義方法。使用SpringMVC注解+方法定義,實(shí)現(xiàn)遠(yuǎn)程服務(wù)訪問規(guī)則定義。
* 建議寫法: 找到要訪問的控制器。復(fù)制對(duì)應(yīng)的方法簽名即可。
*
* GetMapping - 約束了請(qǐng)求方式
* 注解屬性value - 約束了請(qǐng)求的具體地址
* 方法返回值 - 約束了遠(yuǎn)程服務(wù)返回結(jié)果類型
* 方法參數(shù)表 - 約束了遠(yuǎn)程服務(wù)的請(qǐng)求參數(shù)
*/
@GetMapping("/getNoParams")
public String getNoParams();
/**
* post請(qǐng)求,無參數(shù)
* @return
*/
@PostMapping("/postNoParams")
public String postNoParams();
}(4)本地接口注意事項(xiàng)
形參需要添加對(duì)應(yīng)注解如@RequestParam,@RequestBody,@PathVariable等。
三、通訊優(yōu)化
(1)配置OpenFeign請(qǐng)求-應(yīng)答的GZIP壓縮
# 配置openfeign請(qǐng)求和應(yīng)答的gzip壓縮處理
feign:
compression:
request:
enabled: true # 開啟請(qǐng)求壓縮處理。默認(rèn)false
min-request-size: 128 # 請(qǐng)求容量多少,開始?jí)嚎s。默認(rèn)2048字節(jié)
mime-types: text/html, text/xml, text/plain, text/css, application/json # 請(qǐng)求頭content type是什么,做壓縮處理
response:
enabled: true # 開啟響應(yīng)壓縮處理。默認(rèn)false
(2)Tomcat服務(wù)器GZIP優(yōu)化配置
server:
compression:
enabled: true # 是否開啟響應(yīng)壓縮處理。默認(rèn)false
mime-types: text/html, text/xml, text/plain, text/css, text/javascript, application/javascript, application/json, application/xml # 響應(yīng)content type什么類型,做壓縮處理。
min-response-size: 128 # 響應(yīng)容量多大,做壓縮處理。 默認(rèn)2048字節(jié)
到此這篇關(guān)于SpringCloud openfeign聲明式服務(wù)調(diào)用實(shí)現(xiàn)方法介紹的文章就介紹到這了,更多相關(guān)SpringCloud openfeign內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- SpringCloud服務(wù)接口調(diào)用OpenFeign及使用詳解
- SpringCloud Ribbon與OpenFeign詳解如何實(shí)現(xiàn)服務(wù)調(diào)用
- SpringCloud?OpenFeign?服務(wù)調(diào)用傳遞?token的場(chǎng)景分析
- SpringCloud學(xué)習(xí)筆記之OpenFeign進(jìn)行服務(wù)調(diào)用
- SpringCloud 服務(wù)負(fù)載均衡和調(diào)用 Ribbon、OpenFeign的方法
- Springcloud基于OpenFeign實(shí)現(xiàn)服務(wù)調(diào)用代碼實(shí)例
- SpringCloud中的openFeign調(diào)用服務(wù)并傳參的過程
相關(guān)文章
Java常用類庫Apache Commons工具類說明及使用實(shí)例詳解
這篇文章主要介紹了Java常用類庫Apache Commons工具類說明及使用實(shí)例詳解,需要的朋友可以參考下2020-02-02
解讀System.getProperty("ENM_HOME")中的值從哪獲取的
這篇文章主要介紹了解讀System.getProperty("ENM_HOME")中的值從哪獲取的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12
java統(tǒng)計(jì)字符串中指定元素出現(xiàn)次數(shù)方法
這篇文章主要介紹了java統(tǒng)計(jì)字符串中指定元素出現(xiàn)次數(shù)方法,需要的朋友可以參考下2015-12-12
Spring?boot框架JWT實(shí)現(xiàn)用戶賬戶密碼登錄驗(yàn)證流程
這篇文章主要介紹了Springboot框架JWT實(shí)現(xiàn)用戶賬戶密碼登錄驗(yàn)證,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-06-06
使用Spring注解@EventListener實(shí)現(xiàn)監(jiān)聽原理
這篇文章主要介紹了使用Spring注解@EventListener實(shí)現(xiàn)監(jiān)聽原理,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08
利用Spring boot如何創(chuàng)建簡(jiǎn)單的web交互應(yīng)用
這篇文章主要介紹了利用Spring boot如何創(chuàng)建簡(jiǎn)單的web交互應(yīng)用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來一起看看吧。2017-04-04
Java線程池的優(yōu)點(diǎn)及池化技術(shù)的應(yīng)用
這篇文章主要介紹了Java線程池的優(yōu)點(diǎn)及池化技術(shù)的應(yīng)用,Java種提高程序的執(zhí)行效率有兩種實(shí)現(xiàn)方法,一個(gè)是使用線程、另一個(gè)是使用線程池,下文我們就來具體介紹該詳細(xì)內(nèi)容吧,需要的小伙伴可以參考一下2022-05-05

