SpringCloud openfeign聲明式服務調用實現方法介紹
一、介紹
OpenFeign是一種聲明式、模板化的HTTP客戶端(僅在Application Client中使用)(稱OpenFeign作用:聲明式服務調用)。聲明式調用是指,就像調用本地方法一樣調用遠程方法,無需感知操作遠程http請求。OpenFeign替換RestTemplate。
二、使用
(1)導入依賴
<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)在啟動類上添加掃描註解
/** * EnableFeignClients - 開啟Openfeign技術。讓spring cloud掃描Openfeign相關註解, * 生成動態代理實現對象。 * 可選屬性 basePackages = {"feign接口所在包1", "feign接口所在包2"} * 默認掃描當前類型所在包,及所有子孫包。 */ @SpringBootApplication @EnableEurekaClient @EnableFeignClients(basePackages = {"com.bjsxt.feign"}) public class OpenFeignAppClientApp { public static void main(String[] args) { SpringApplication.run(OpenFeignAppClientApp.class, args); } }
(3)編寫本地接口
/** * 定義接口,基於註解,實現聲明式遠程服務調用。 * 技術是OpenFeign。 * 需要確定的事情: * 1. 訪問的遠程服務名稱是什麼。 * 2. 訪問的遠程服務具體地址是什麼。 * 3. 訪問的遠程服務請求方式是什麼。 * 4. 訪問的遠程服務,參數是什麼。 * 5. 訪問的遠程服務,返回結果類型是什麼。 * * FeignClient - 代表當前的接口是一個OpenFeign客戶端,要訪問遠程的服務。 * 具體的實現類對象,由spring cloud動態生成代理對象來實現。 * 必要屬性: value - 要訪問的遠程服務命名是什麼。 */ @FeignClient("application-service") public interface AppServiceOpenfeignClient { /** * 定義方法。使用SpringMVC註解+方法定義,實現遠程服務訪問規則定義。 * 建議寫法: 找到要訪問的控制器。復制對應的方法簽名即可。 * * GetMapping - 約束瞭請求方式 * 註解屬性value - 約束瞭請求的具體地址 * 方法返回值 - 約束瞭遠程服務返回結果類型 * 方法參數表 - 約束瞭遠程服務的請求參數 */ @GetMapping("/getNoParams") public String getNoParams(); /** * post請求,無參數 * @return */ @PostMapping("/postNoParams") public String postNoParams(); }
(4)本地接口註意事項
形參需要添加對應註解如@RequestParam,@RequestBody,@PathVariable等。
三、通訊優化
(1)配置OpenFeign請求-應答的GZIP壓縮
# 配置openfeign請求和應答的gzip壓縮處理
feign:
compression:
request:
enabled: true # 開啟請求壓縮處理。默認false
min-request-size: 128 # 請求容量多少,開始壓縮。默認2048字節
mime-types: text/html, text/xml, text/plain, text/css, application/json # 請求頭content type是什麼,做壓縮處理
response:
enabled: true # 開啟響應壓縮處理。默認false
(2)Tomcat服務器GZIP優化配置
server:
compression:
enabled: true # 是否開啟響應壓縮處理。默認false
mime-types: text/html, text/xml, text/plain, text/css, text/javascript, application/javascript, application/json, application/xml # 響應content type什麼類型,做壓縮處理。
min-response-size: 128 # 響應容量多大,做壓縮處理。 默認2048字節
到此這篇關於SpringCloud openfeign聲明式服務調用實現方法介紹的文章就介紹到這瞭,更多相關SpringCloud openfeign內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- 關於pom.xml中maven無法下載springcloud包問題
- SpringCloud使用Feign實現動態路由操作
- SpringCloud學習筆記之OpenFeign進行服務調用
- Spring Cloud超詳細i講解Feign自定義配置與使用
- springcloud 整合 openfeign的方法