一. 什么是Feign
Feign是一个声明式的Web Service客户端,使用Feign只需要创建一个接口加上对应的注解,比如:@FeignClient注解。SpringCloud Open Feign对Feign进行增强支持Spring MVC注解。
二. Feign的特性
- 可插拔的注解支持,包括Feign注解和JAX-RS注解;
- 支持可插拔的HTTP编码器和解码器;
- 支持Hystrix和它的Fallback;
- 支持Ribbon的负载均衡;
- 支持HTTP请求和响应的压缩。
三. Feign主要属性介绍
@AliasFor("name")
String value() default "";
/** @deprecated */
@Deprecated
String serviceId() default "";
// id
String contextId() default "";
@AliasFor("value")
//指定FeignClient的名称,作为微服务的名称,用于服务发现
String name() default "";
String qualifier() default "";
String url() default "";
boolean decode404() default false;
//Feign的配置类,可以自定义Feign的Encode,Decoder,LogLevel,Contract。
Class<?>[] configuration() default {};
//定义容错的处理类,当调用远程接口 失败 或者 超时 时候,会调用
// 对应的接口的容错逻辑,fallback指定的类必须实现@FeignClient标记的接口
Class<?> fallback() default void.class;
//工厂类,用于生成fallback类示例
Class<?> fallbackFactory() default void.class;
//定义当前FeginClient的统一前缀
String path() default "";
boolean primary() default true;