OpenFeign

Feign is a Java to HTTP client binder inspired by Retrofit, JAXRS-2.0, and WebSocket. Feign’s first goal was reducing the complexity of binding Denominator uniformly to HTTP APIs regardless of ReSTfulness.

使用 OpenFeign 的 Spring 应用架构一般分为三个部分,分别为服务注中心服务提供者服务消费者。服务提供者向服务注册中心注册自己,然后服务消费者通过 OpenFeign 发送请求时, OpenFeign 会向服务注册中心获取关于服务提供者的信息,然后再向服务提供者发送网络请求。

https://lddpicture.oss-cn-beijing.aliyuncs.com/picture/image-20210627212904996.png

1. 注解

  • @EnableFeignClients 注解的定义如下:
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Documented
@Import(FeignClientsRegistrar.class)
public @interface EnableFeignClients {

    //下面三个函数都是为了指定需要扫描的包
	String[] value() default {};
	String[] basePackages() default {};
	Class<?>[] basePackageClasses() default {};

    //指定自定义feignclient的自定义配置,可以配置Decoder、Encoder、Contract等组件,FeignClientsConfiguration是默认的配置
	Class<?>[] defaultConfiguration() default {};

	Class<?>[] clients() default {};

}

OpenFeign 通过 FeignClientsRegistrar 来处理 @FeignClient 注解修饰的 FeignClient 接口类,将这些接口类的 BeanDefinition 注册到 Spring 容器中,这样就可以使用 @Autowired 等方式来自动装载这些 FeignClient 接口类的 Bean 实例。

Resource

0%