史上最簡單的SpringCloud教程 | 第三篇: 服務消費者(Feign)
Feign是一個聲明式的僞Http用戶端,它使得寫Http用戶端變得更簡單。使用Feign,隻需要建立一個接口并注解。它具有可插拔的注解特性,可使用Feign 注解和JAX-RS注解。Feign支援可插拔的編碼器和解碼器。Feign預設內建了Ribbon,并和Eureka結合,預設實作了負載均衡的效果。
簡而言之:
Feign 采用的是基于接口的注解
Feign 整合了ribbon
繼續用上一節的工程, 啟動eureka-server,端口為8761; 啟動service-hi 兩次,端口分别為8762 、8773.
建立一個spring-boot工程,取名為serice-feign,在它的pom檔案引入Feign的起步依賴spring-cloud-starter-feign、Eureka的起步依賴spring-cloud-starter-eureka、Web的起步依賴spring-boot-starter-web,代碼如下:
在工程的配置檔案application.yml檔案,指定程式名為service-feign,端口号為8765,服務注冊位址為http://localhost:8761/eureka/ ,代碼如下:
在程式的啟動類ServiceFeignApplication ,加上@EnableFeignClients注解開啟Feign的功能:
定義一個feign接口,通過@ FeignClient(“服務名”),來指定調用哪個服務。比如在代碼中調用了service-hi服務的“/hi”接口,代碼如下:
在Web層的controller層,對外暴露一個”/hi”的API接口,通過上面定義的Feign用戶端SchedualServiceHi 來消費服務。代碼如下:
啟動程式,多次通路http://localhost:8765/hi?name=forezp,浏覽器交替顯示:
hi forezp,i am from port:8762 hi forezp,i am from port:8763