前言
- 本系列文章中的源码基于Spring-5.0.13版本
- 只关注注解方式,XML配置方式不关注
- 对于不影响Spring流程且研究价值不大的一些代码博主就暂时没有研究
Spring流程导图
内容
1. 构建AnnotationConfigApplicationContext对象,准备环境,并理解Spring中的BeanDefinition重要知识点
3. refresh刷新容器之前期准备工作和Bean工厂级别的BeanFactoryPostProcessor处理流程
4. ConfigurationClassPostProcessor类postProcessBeanDefinitionRegistry()处理配置类流程
5. 解析配置类的内部类、@PropertySource、@ComponentScan,处理@ImportResource注解
6. 处理配置类的@Import、@Bean、父接口方法的@Bean并解析,同时解析@ImportResource
7. 执行postProcessBeanFactory方法对@Configuration配置类的@Bean方法进行CGLIB代理增强
8. 调用registerBeanPostProcessors()方法将容器中的BeanPostProcessor提取出来注册进容器的集合中供对Bean创建时调用
9. refresh刷新容器之finishBeanFactoryInitialization()方法对非延迟加载的单例Bean调用getBean()实例化流程
10. populateBean()方法对已经创建好的实例进行属性填充之ByName或ByType自动注入模型相关代码阅读
11. populateBean()方法对@Autowired和@Value注解的处理