Spring启动流程XML版(源码)

1.XML方式配置bean启动Spring的核心类: ClassPathXmlApplicationContext -> AbstractXmlApplicationContext 

类结构如下:

 核心方法: refresh()方法, 刷新容器, 包含12个核心子方法, 如下: 

方法1: prepareRefresh();

作用:容器刷新前的准备工作

方法2: ConfigurableListableBeanFactory beanFactory = obtainFreshBeanFactory();

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

方法3: prepareBeanFactory(beanFactory);

作用: beanFactory的准备工作,对各种属性进行填充

方法4: postProcessBeanFactory(beanFactory);

作用: 子类覆盖方法做额外的处理,此处我们自己一般不做任何扩展工作,但是可以查看web中的代码,是有具体实现的

方法5: invokeBeanFactoryPostProcessors(beanFactory);

作用: 调用各种beanFactory处理器

方法6: registerBeanPostProcessors(beanFactory);

作用: 注册bean处理器,这里只是注册功能,真正调用的是getBean方法

方法7: initMessageSource();

作用: 为上下文初始化message源,即不同语言的消息体,国际化处理,在springmvc的时候通过国际化可以实现使用

方法8: initApplicationEventMulticaster();

作用: 初始化事件监听多路广播器

方法9: onRefresh();

作用: 留给子类来初始化其他的bean

方法10: registerListeners();

作用: 在所有注册的bean中查找listener bean,注册到消息广播器中

方法11: finishBeanFactoryInitialization(beanFactory);

作用: 初始化剩下的单实例bean对象(非懒加载的)

方法12: finishRefresh();

作用: 完成刷新过程,通知生命周期处理器lifecycleProcessor刷新过程,同时发出ContextRefreshEvent通知

 

 
posted @ 2024-02-24 19:34  小黑与小白  阅读(61)  评论(0)    收藏  举报