欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Spring Cloud @EnableFeignClients注解的属性字段basePacka详解

程序员文章站 2022-03-07 22:13:07
@enablefeignclients注解的属性字段basepacka一般情况下,我们在启动类上面添加了@enablefeignclients注解就是表明当前应用服务(我们称之为服务a)中有的地方想要...

@enablefeignclients注解的属性字段basepacka

一般情况下,我们在启动类上面添加了@enablefeignclients注解就是表明当前应用服务(我们称之为服务a)中有的地方想要引用其它应用服务(我们称之为服务b)中的接口。

如果服务b可以单独启动起来并且注册到注册中心,则我们仅仅在服务a的启动类中添加@enablefeignclients注解即可;如果服务b没有单独启动起来,而是以jar包的形式被引入到服务a中,则服务a在启动的时候是不会主动去加载服务b中标注了@feignclient注解的interface而去自动生成bean对象,

这样我们在服务a中的controller类中以如下这种方式去引入使用服务b中的标注了@feignclient注解的接口 是会报错的

import com.bc.product.client.productclient; 
@restcontroller
public class clientcontroller { 
    @autowired
    private productclient productclient; 
    ...
}

这个时候就需要使用basepackages属性字段去指明应用程序a在启动的时候需要扫描服务b中的标注了@feignclient注解的接口的包路径

@springbootapplication
@enableeurekaclient
@enablefeignclients(basepackages = {"com.bc.product.client"})
public class orderapplication { 
 public static void main(string[] args) {
  springapplication.run(orderapplication.class, args);
 } 
}

关于enablefeignclients的basepackages问题

如果使用了springcloud的openfeign,在application上需要添加@enablefeignclients注解。却没有明确指明basepackages的路劲。

则spring ioc不会自动为外部引入的其他服务jar包里,标注了@feignclient注解的interface自动生成bean对象。

正确的做法应该是明确指定basepackages的值,比如像这样:

Spring Cloud @EnableFeignClients注解的属性字段basePacka详解

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。