@EnableFeignClients注解详解

本文将详细介绍@EnableFeignClients注解的介绍,以及一些简单的实例。

@EnableFeignClients注解用来启动FeignClient,以支持Feign。该注解可以通过配置,扫描指定位置的@FeignClient注解声明的Feign客户端接口。源码如下:

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Documented
@Import(FeignClientsRegistrar.class)
public @interface EnableFeignClients {
    String[] value() default {};
    String[] basePackages() default {};
    Class<?>[] basePackageClasses() default {};
    Class<?>[] defaultConfiguration() default {};
    Class<?>[] clients() default {};
}

下面将通过实例对该注解的其他属性一一进行讲解。实例项目结构如下:

@EnableFeignClients注解详解

其中:

  • FeginClient客户端:SchedualServiceHi和SchedualServiceHi2

  • Controller控制器:HiController,该控制器中引入了上面两个FeignClient

  • ServiceFeignApplication通过@FeignClient引入/扫描FeignClient

value和basePackage

value和basePackage具有相同的功能,其中value是basePackage的别名。分别如下:

  • value:为basePackages属性的别名,允许使用更简洁的书写方式。例如:@EnableFeignClients({“com.huangx”})

  • basePackage:设置自动扫描带有@FeignClient注解的基础包路径。例如:com.huangx;value和basePackage只能同时使用一个。

实例:下面将自动扫描“com.forezp.service”和“com.forezp.service2”包下面所有被@FeignClient注解修饰的类。代码如下:

@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients({"com.forezp.service", "com.forezp.service2"})
public class ServiceFeignApplication {
    public static void main(String[] args) {
        SpringApplication.run(ServiceFeignApplication.class, args);
    }
}

我们也可以使用basePackage进行设置,代码如下:

@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients(basePackages = {"com.forezp.service", "com.forezp.service2"})
public class ServiceFeignApplication {
    public static void main(String[] args) {
        SpringApplication.run(ServiceFeignApplication.class, args);
    }
}

basePackageClasses

该属性是basePackages属性的安全替代属性。该属性将扫描指定的每个类所在的包下面的所有被@FeignClient修饰的类;这需要考虑在每个包中创建一个特殊的标记类或接口,该类或接口除了被该属性引用外,没有其他用途。

实例:下面将自动扫描“com.forezp.service”和“com.forezp.service2”包下面所有被@FeignClient注解修饰的类。代码如下:

@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients(basePackageClasses = {ServicePackage.class, Service2Package.class})
public class ServiceFeignApplication {
    public static void main(String[] args) {
        SpringApplication.run(ServiceFeignApplication.class, args);
    }
}

defaultConfiguration

该属性用来自定义所有Feign客户端的配置,使用@Configuration进行配置。当然也可以为某一个Feign客户端进行配置。具体配置方法见@FeignClient的configuration属性。

clients

设置由@FeignClient注解修饰的类列表。如果clients不是空数组,则不通过类路径自动扫描功能来加载FeignClient。实例:

@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients(clients = {SchedualServiceHi.class, SchedualServiceHi2.class})
public class ServiceFeignApplication {
    public static void main(String[] args) {
        SpringApplication.run(ServiceFeignApplication.class, args);
    }
}

上面代码中引入FeignClient客户端SchedualServiceHi,且也只引入该FeignClient客户端。

项目源码:

https://gitee.com/hxstrive/spring_learning/tree/master/spring_cloud/springcloud_learn1/chapter3/chapter3-service-feign2

所谓天才,只不过是把别人喝咖啡的功夫都用在工作上了。——鲁迅
9 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号