概念
Feign 是一种声明式Web服务客户端,底层封装了对Rest技术的应用,通过Feign可以简化服务消费方对远程服务提供方法的调用实现。如图所示:
使用步骤
第一步:在服务消费方,添加项目依赖(SpringCloud团队基于OpenFeign研发了starter)
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
第二步:在启动类上添加@EnableFeignClients注解
* 该注解描述启动类,会在启动类启动时,扫描使用@FeignClients注解描述的接口
第三步:定义Http请求API,基于此API借助OpenFeign访问远端服务
@FeignClient(name="sca-provider")//sca-provider为服务提供者名称
public interface RemoteProviderService{
@GetMapping("/provider/echo/{string}")//前提是远端需要有这个服务
public String echoMessage(@PathVariable("string") String string);
}
@FeignClient为接口创建实现类对象(这个实现类我们称之为代理对象),此对象内部会封装对远程服务调用的过程
* @FeignClient注解中name属性的值有两个层面的含义:
1)RemoteProviderService接口类型对象交给Spring管理时,这个对象(bean)的名字
2)远程调用服务名
* @FeignClient注解中contextId属性的作用是将Bean对象交给spring管理时起一个新的名字
* @FeignClient注解中fallbackFactory属性的作用是当调用的服务突然不可用或调用超时,
Feign应用中通过FallbackFactory接口的实现类进行默认的处理