区别:
@Component
@Configuration(里面包含Component)
@Configurable
- Component不会为当前类生成CGLIB代理Class,结果是两个类;Configuration生成当前对象的子类Class,并对方法拦截,第二次调用方法时直接从BeanFactory之中获取对象,所以得到的是同一个对象;
- Configurable手动new出来的对象,可以依赖注入,Configuration不能
解决问题:使用Feign,配置类为feign1,feign2,接口类feignInt1,feignInt2.
同一份接口类:
@FeignClient(name = "feignClient1", url = "xxx",configuration = feign1.class)
feignInt1
@FeignClient(name = "feignClient2", url = "xxx",configuration = feign1.class)
feignInt2
三份不同配置类
a:
@Component
feign1
@Component
feign2
b:
@Configuration
feign1
@Configuration
feign2
c:
@Configurable
feign1
@Configurable
feign2
结论:
使用a、b配置类下,调用feignInt1会同时被feign1和feign2都拦截;
使用c配置类下,调用feignInt1只会被feign1拦截;调用feign2同理。