跳到主要内容

【13】@EnableFeignClients注解源码分析

文章目录

  • 前言
  • 作用
  • 配置属性
  • FeignClientsRegistrar
  • 总结

前言

在Cloud 中使用@EnableFeignClients启用Feign客户端,接下来分析下这个注解的基本原理。

作用

@EnableFeignClients注解会扫描包路径下的@FeignClient注解定义的接口,并注册到IOC容器中。

配置属性

配置属性主要是配置扫描路径:

@Retention(RetentionPolicy.RUNTIME)
@Target({

ElementType.TYPE})
@Documented
@Import({

FeignClientsRegistrar.class})
public @interface EnableFeignClients {


// 配置扫描@FeignClient的路径,默认是当前标识了该注解类下的路径,和@ComponentScans一样
String[] value() default {

};
// 扫描路径,多个
String[] basePackages() default {

};
// 指定扫描某个类所在包下的所有类
Class<?>[] basePackageClasses() default {

};
// 指定客户端配置配
Class<?>[] defaultConfiguration() default {

};
// 直接指定扫描客户端的类,配置了就不会扫描
Class<?>[] clients() default {

};
}

FeignClientsRegistrar

@EnableFeignClients注解中,使用了@Import注解导入了FeignClientsRegistrar,学过Spring 的应该知道@Configuration类上使用@Import,可以注入Bean 对象。

FeignClientsRegistrar实现了以下几个接口:

  • ImportBeanDefinitionRegistrar:支持使用@Import注解注册 BeanDefinition