2.Spring源码系列-AbstractApplicationContext解析

介绍

此类应该是spring 容器启动的统一调度中,可以说,下面的每一行代码都是一个独立的任务链。在接下来的章节中,我会一一详细的剖析下面的每一项任务的执行过程。

  1. refresh
//预刷新,设置容器启动时间、激活标志位
//执行初始化上下文的环境参数(目前看到的是将servletContext和servLetConfig设置到上下文的环境propertySource中)
prepareRefresh();

//这个方法做了三件事
//1.创建bean工厂,这里的bean工厂实例是DefaultListableBeanFactory类型
//2.定制化bean工厂
//3.加载定义bean的xml文件
ConfigurableListableBeanFactory beanFactory = obtainFreshBeanFactory();

// 配置bean工厂
prepareBeanFactory(beanFactory);
// 
postProcessBeanFactory(beanFactory);
// 执行beanFactoryProcessor
invokeBeanFactoryPostProcessors(beanFactory);
// 注册所有的beanPostProcessor
registerBeanPostProcessors(beanFactory);
// 初始化messageSource
initMessageSource();
// 初始化事件发布者
initApplicationEventMulticaster();
// 初始化主题源
onRefresh();
// 注册监听器
registerListeners();
// 1.将xml定义的bean生成实例
// 2.完成bean之间的依赖注入关系
// 3.调用前面定义的BeanPostProcessor
finishBeanFactoryInitialization(beanFactory);
// 容器加载结束后的一些收尾工作
// 1.容器生命周期处理器lifeCycle processor的执行
// 2.发布容器加载成功事件
finishRefresh();

你可能感兴趣的:(2.Spring源码系列-AbstractApplicationContext解析)