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通知
标签:XML,初始化,beanFactory,Spring,bean,源码,方法,作用 From: https://www.cnblogs.com/superpiter/p/18031468