refresh()

1.prepareRefresh()

设置当前spring启动时间
设置活跃状态为true
设置关闭状态为false
获取当前环境对象Environment并设置环境对象里面的属性值
设置监听器以及需要发布的一些事件的集合(都是空的)

2.obtainFreshBeanFactory()

创建容器对象:DefualtListableBeanFactory
加载xml配置文件的属性值到当前工厂中,最重要的就是BeanDefinition

3.prepareBeanFactory()

给当前bean工厂设置属性值
忽略一些Aware接口属性

4.postProcessBeanFactory()

一个空的模板方法,后续可以自己实现

5.invokeBeanFactoryPostProcessors()

实例化并执行所有已经注册的BFPP beans
如果给定顺序则按照顺序执行
单例对象在初始化之前一定要被调用

6.registerBeanPostProcessors()

实例化并注册所有的BPP beans

7.initMessageSource()

初始化消息资源,国际化的东西,暂时用不到

8.initApplicationEventMulticaster()

初始化应用程序事件多播器

9.onRefresh()

空方法实现
留给子类做一些相关扩展工作

10.finishBeanFactoryInitialization()

实例化所有的剩下的非懒加载的单例对象

11.finishRefresh()

完成刷新工作