Spring Cloud Feign
Spring Cloud Feign是一套基于Netflix Feign实现的声明式服务调用客户端。
一、根据eureka-consumer
复制一个服务消费者工程,命名为:eureka-consumer-feign
。在pom.xml
中增加下面的依赖:
<dependencies>
...
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
</dependency>
</dependencies>
二、修改应用主类。通过@EnableFeignClients
注解开启扫描Spring Cloud Feign客户端的功能:
@EnableFeignClients @EnableDiscoveryClient @SpringBootApplication public class Application { public static void main(String[] args) { new SpringApplicationBuilder(Application.class).web(true).run(args); } }
三、创建一个Feign的客户端接口定义。
使用@FeignClient
注解来指定这个接口所要调用的服务名称,接口中定义的各个函数使用Spring MVC的注解就可以来绑定服务提供方的REST接口,
比如下面就是绑定eureka-client
服务的/dc
接口的例子:
@FeignClient("eureka-client") public interface DcClient { @GetMapping("/dc") String consumer(); }
@FeignClient("eureka-client") 指定我们要调用服务名称,
("/dc") 绑定服务提供方的接口名
四、修改 Controller。通过定义的feign客户端来调用服务提供方的接口:
@RestController public class DcController { @Autowired DcClient dcClient; @GetMapping("/consumer") public String dc() { return dcClient.consumer(); } }
通过Spring Cloud Feign来实现服务调用的方式更加简单了,通过@FeignClient
定义的接口来统一的声明我们需要依赖的微服务接口。
而在具体使用的时候就跟调用本地方法一点的进行调用即可。由于Feign是基于Ribbon实现的,所以它自带了客户端负载均衡功能