宣告式服務呼叫Feign
阿新 • • 發佈:2018-12-24
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返回值為複雜物件時其型別必須有無參建構函式。