1. 程式人生 > >宣告式服務呼叫Feign

宣告式服務呼叫Feign

Feign介紹

Feign是Netflix公司開源的輕量級rest客戶端,使用Feign可以非常方便的實現Http 客戶端。Spring Cloud引入.Feign並且集成了Ribbon實現客戶端負載均衡呼叫。

 

Feign 整合測試

1、在客戶端新增依賴,所需依賴如下

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

        <dependency>
            <groupId>com.squareup.okhttp3</groupId>
            <artifactId>okhttp</artifactId>
        </dependency>

 

2、定義FeignClient介面

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

@FeignClient(value = "XC-SERVER-CMS")
public interface CmsPageClient {

    @GetMapping("/get/{id}")
    public CmsPage findPageById(@PathVariable("id") String id);
}

 

 

3.在啟動類中添加註解

啟動類新增@EnableFeignClients註解

 

4.測試

 @Resource
    private CmsPageClient cmsPageClient;

    @Test
    public void fun02(){
        CmsPage cmsPage = cmsPageClient.findPageById("5a754adf6abb500ad05688d9");

        System.out.println(cmsPage);
    }

 

 

執行結果

 

 

Feign 執行流程 

1.啟動類新增@EnableFeignClients註解,spring會掃描標記了 FeignClients註解的介面,並生成介面的代理物件

[email protected](value = XcServiceList.XC_SERVICE_MANAGE_CMS)即指定了cms的服務名稱,Feign會從註冊中
心獲取cms服務列表,並通過負載均衡演算法進行服務呼叫

3.介面方法註解@GetMapping("/get/{id}") ,指定了呼叫url,並且指定了呼叫方法的型別,feign根據url進行呼叫

 

 

Feign 注意事項 

1.feignClient介面 有引數在引數必須加@PathVariable("XXX")和@RequestParam("XXX")

2.feignClient返回值為複雜物件時其型別必須有無參建構函式。