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!

推薦閱讀: