1 創(chuàng)建過(guò)程
@EnableFeignClients注解和FeignClientsRegistrar類會(huì)將FeignClient注冊(cè)到IOC容器中芭挽,類型是FeignClientFactoryBean。無(wú)論寫了多少個(gè)FeignClient辜伟,其類型都是一致的。在這個(gè)階段只是做了注冊(cè)挽封,并沒有真正的生成代理類拦赠,也沒有把代理類注入到IOC容器中赁酝。
FeignClientFactoryBean實(shí)現(xiàn)了FactoryBean,我們關(guān)注FeignClientFactoryBean#getObejct方法就可以了紊浩。
我創(chuàng)建了一個(gè)FeignClient窖铡,并沒有注入到任何@Component類中疗锐,即沒有任何地方會(huì)用到這個(gè)FeignClient,然后在FeignClientFactoryBean#getObejct上加上斷點(diǎn)费彼,項(xiàng)目在啟動(dòng)時(shí)并沒有進(jìn)入斷點(diǎn)滑臊,可見FeignClientsRegistrar只是將FeignClientFactoryBean注冊(cè)到了IOC容器,并沒有做更多的工作箍铲。再新建一個(gè)@Component類雇卷,以@Autowired的方式注入FeignClient,再次啟動(dòng)項(xiàng)目 就會(huì)進(jìn)入FeignClientFactoryBean#getObejct方法以生成對(duì)象實(shí)例颠猴。