springcloud之Feign實現聲明式REST調用
阿新 • • 發佈:2018-11-04
web 服務器列表 from pub 模板 客戶端 tap dep clas
Feign是Netflix開發的聲明式、模板化的HTTP客戶端,可幫助我們更加便捷、優雅的調用HTTP api。spring cloud對Feign進行了增強,使Feign支持了Spring MVC註解,並整合了Ribbon和Eureka,從而讓Feign的使用更加方便:只需要創建一個接口,並在接口上添加一些註解,代碼就完成了,Feign支持多種註解,子嗲的或者JAX-RS註解等。
添加maven依賴:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>
修改application.yml文件:
eureka: client: serviceUrl: defaultZone: http://localhost:8761/eureka/ server: port: 8765 spring: application: name: service-feign
在程序的啟動類ServiceFeignApplication ,加上@EnableFeignClients註解開啟Feign的功能:
@SpringBootApplication @EnableEurekaClient @EnableDiscoveryClient @EnableFeignClientspublic class ServiceFeignApplication { public static void main(String[] args) { SpringApplication.run( ServiceFeignApplication.class, args ); } }
創建一個Feign接口,並添加@FeignClient註解:
@FeignClient(value = "service-hi") public interface SchedualServiceHi { @RequestMapping(value = "/hi",method = RequestMethod.GET) String sayHiFromClientOne(@RequestParam(value = "name") String name); }
@FeignClient註解中的“service-hi”是需要調用的服務名稱,會自動使用Ribbon負載均衡,由於使用了Eureka,Ribbon會把服務名解析成Eureka Server服務註冊表中的服務,如果不想使用Eureka,可以使用service.ribbon.listofServers屬性配置服務器列表。
然後在web controller層直接傳入參數並調用SchedualServiceHi.sayHiFromClientOne(name)即可。
springcloud之Feign實現聲明式REST調用