1 创建过程
@EnableFeignClients注解和FeignClientsRegistrar类会将FeignClient注册到IOC容器中,类型是FeignClientFactoryBean。无论写了多少个FeignClient,其类型都是一致的。在这个阶段只是做了注册,并没有真正的生成代理类,也没有把代理类注入到IOC容器中。
FeignClientFactoryBean实现了FactoryBean,我们关注FeignClientFactoryBean#getObejct方法就可以了。
我创建了一个FeignClient,并没有注入到任何@Component类中,即没有任何地方会用到这个FeignClient,然后在FeignClientFactoryBean#getObejct上加上断点,项目在启动时并没有进入断点,可见FeignClientsRegistrar只是将FeignClientFactoryBean注册到了IOC容器,并没有做更多的工作。再新建一个@Component类,以@Autowired的方式注入FeignClient,再次启动项目 就会进入FeignClientFactoryBean#getObejct方法以生成对象实例。
网友评论