Feign
简介
Spring Cloud引入Feign并且集成了Ribbon实现客户端负载均衡调用,Feign是一个轻量级的rest客户端,简化远程调用,像调用本地方法一样进行远程调用,
Feign的使用步骤
1.引入坐标
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
<version>1.4.6.RELEASE</version>
</dependency>
2.启动类上配置注解@EnableFeignClients扫描,生成代理对象,注入IOC容器
@SpringBootApplication
@EnableFeignClients
public class FeignApplication {
public static void main(String[] args) {
SpringApplication.run(FeignApplication.class);
}
}
3.配置文件添加如下图
3.定义一个接口添加FeignClient注解,声明要远程调用得服务名(所有服务名统一写到公共类里面了)
4.定义FeignController调用测试
5.启动各个相关服务测试
注册到注册中心的服务
测试结果
既然Feign集成了Ribbon,如何使用呢?
其实在以上步骤完成之后就已经采用默认的轮询负载均衡策略了,如果想换一种策略如何解决呢?(动动脑筋)
Feign也集成了Hystrix,又如何使用呢?
1.配置文件添加如下内容开启Hystrix功能
2.接口类上设置回调类
3.MyFallback类如下图所示
服务熔断如何获取远程服务异常信息
1.接口类上注解参数修改如下图
2.定义MyFallbackFactory类如下
3.启动服务测试(略)
注意事项
SpringCloud对Feign进行了增强兼容了SpringMVC的注解 ,我们在使用SpringMVC的注解时需要注意:
1feignClient返回值为复杂对象时其类型必须有无参构造函数。