SpringCloud@EnableFeignClients注解的属性字段
basePacka详解
@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
spring ioc注解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的值,⽐如像这样:
以上为个⼈经验,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。