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()方法有异曲同工之妙。
浙公网安备 33010602011771号