天天看點

Spring Cloud Netflix 元件使用(二): Spring Cloud Feign

關于feign:feign是一個僞RPC遠端調用的元件,預設內建了ribbon。

之前用 RestTemplate 跟 ribbon 完成遠端調用跟負載均衡的事,現在用預設內建了ribbon的feign完成。

用 RestTemplate 時 使用不同的調用位址,用feign時使用不同的接口對象與接口内的方法 比對不同的服務

使用:

1.pom檔案中引用依賴

Spring Cloud Netflix 元件使用(二): Spring Cloud Feign

2.application.properties 配置檔案中配置服務提供位址

Spring Cloud Netflix 元件使用(二): Spring Cloud Feign

3.建立一個接口,标注@FeignClient注解,value寫配置檔案中的服務名稱,方法标注@XXXMapping

Spring Cloud Netflix 元件使用(二): Spring Cloud Feign

4.啟動類上加上 @EnableFeignClient注解,basePackages要掃描到@FeignClient注解的類

Spring Cloud Netflix 元件使用(二): Spring Cloud Feign

5,直接@Autowired注入接口,直接使用接口中的方法,即可負載均衡調用遠端服務

Spring Cloud Netflix 元件使用(二): Spring Cloud Feign

以上是用戶端的做法,伺服器端要有一模一樣的方法實作。

另外一種方式,服務端提供一個api子產品裡面提供一個接口,提供一個@FeignClient接口 extends這個接口,及其他接口方法參數需要的實體,這個api子產品是要被用戶端與伺服器端共同依賴的。

然後,服務端其他子產品寫這個接口的實作類

用戶端引用服務端的api子產品,@EnableFeignClient注解掃描到api子產品中的@FeignClient注解的接口,然後直接注入接口,進行遠端調用