开篇点题
上次讲到(第二讲)程序怎么调用生产者的接口,汇总了2种方案
方案一:RestTemplate+Ribbon
方案二:Feign的方式,对就是这个spring-cloud-starter-openfeign
下面我们来看第二种
Tips:
Feign是一个声明式的伪Http客户端,它使得写Http客户端变得更简单。使用Feign,只需要创建一个接口并注解。它具有可插拔的注解特性,可使用Feign 注解和JAX-RS注解。Feign支持可插拔的编码器和解码器。Feign默认集成了Ribbon,并和Eureka结合,默认实现了负载均衡的效果。
简而言之:
Feign 采用的是基于接口的注解
Feign 整合了ribbon,具有负载均衡的能力
整合了Hystrix,具有熔断的能力
Demo区域
本章节还是springcloud-01-eureka-producer-consumer模块的案例(1、2、3讲都是这个模块)
pom引入
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
</dependencies>
启动类加上@EnableFeignClients
接下来就是关键的地方了
Service层
@FeignClient(name= "spring-cloud-provider")
public interface HelloService {
@RequestMapping(value = "hello")
public String hello(@RequestParam(value = "name") String name);
}
??完了?
对,是的完了,调用就这么简单,注意
定义一个feign接口,通过@ FeignClient(“服务名”),指定调用哪个服务(这里是生产者的服务,以后需要用路由的地址)。
接下来就是controller层了
测试开始 (成功)
End
Feign方式调用是开发种常见的模式,所以大家要重视起来,章节种有很多优化的地方,小伙伴赶紧学哈,我在SpringCloud高级专栏等你
@架构师速成记
源代码:https://github.com/shinians/springcloud-demos