20.spring源码之@Bean注解

上篇文章提了下@ImportSource注解,这篇文章接着代码往后面走。

1.doPorcessConfigurationClass()方法

2.进入retrieveBeanMethodMatadata()方法

收集有@Bean注解

3.进入addBeanMethod()方法

放把beanMethods容器中

 

在处理@Bean注解后面还有个processInterfaces()方方法,这个方法就是处理接口中的@Bean注解,也是放入beanMethods容器中。到这里doProcessConfigurationClass()就讲完了。也就是parse()方法讲完了。

parse()方法呢,就是通过@ComponentScan把有@Component注解的类封装成BeanDefiniton,然后有其他特殊注解的放到对应的容器中。我们接着parse()方法往后面走。来到主流程。

4.回到最初postProcessBeanDefinitionRegistry()方法

 

进入processConfigBeanDefinitions()方法

进入loadBeanDefinitions()方法

进入loadBeanDefinitionsForConfigurationClass()方法

看下loadBeanDefinitoFormRegistrars()方法

这里完成对是实现了ImportBeanDefinitionRegistrar接口的类的registerBeanDefinitions()方法的调用,这个方法的参数有metadata、registry,这个方法主要就是用来操作BeanDefinition的,和实现了BeanDefinitionRegistrPostProcess接口的postProcessBeanDefinitionRegistr()方法有异曲同工之妙。

 

 

posted @ 2021-08-16 19:55  福福猿  阅读(175)  评论(0)    收藏  举报