Spring IOC的初始化过程
2022-01-26 18:10:20 8 举报
Spring IOC的初始化过程
作者其他创作
大纲/内容
调用子类的某些特殊Bean的初始化方法
解析得到document对象
refreshBeanFactory()AbstractRefreshableApplicationContext
为事件传播器注册事件监听器
此方法有以下几个操作:1、createBeanFactory方法会创建一个DefaultListableBeanFactory对象2、customizeBeanFactory此方法是留给子类实现的,推荐通过overwrite的方式对现有的BeanFactory做个性化设置:allowBeanDefinitionOverriding表示是否允许注册一个同名的类来覆盖原有类,allowCircularReferences表示是否运行多个类之间的循环引用3、loadBeanDefinitions把所有bean的定义后保存在context注意是bean的定义,而不是实例化
onRefresh();
初始化入口
obtainFreshBeanFactory()AbstractApplicationContext
为什么要有个别名Map? 别名的意义
为BeanFactory注册Post事件处理器
用于解析XML配置文件
为BeanFactory配置容器特性,例如类加载器、事件处理器
初始化信息源,和国际化相关
BeanDefinitionHolder
重设公共缓存
doRegisterBeanDefinitions(Element root)DefaultBeanDefinitionDocumentReader
invokeBeanFactoryPostProcessors(beanFactory);
setConfigLocations(configLocations)AbstractRefreshableConfigApplicationContext
cancelRefresh(ex);
finishBeanFactoryInitialization(beanFactory);
解析XML文件入口
初始化所有剩余的单例Bean
构建BeanFactory入口
备注说明
准备工作
postProcessBeanFactory(beanFactory);
销毁已经创建的Bean
加载BeanDefinition入口
registerListeners();
registerBeanPostProcessors(beanFactory);
refresh()AbstractApplicationContext
initApplicationEventMulticaster();
resetCommonCaches();
XmlBeanDefinitionReader
finishRefresh();
initMessageSource();
Spring IOC容器初始化过程
LoadBeanDefinitions(beanFactory)AbstractXmlApplicationContext
初始化容器事件传播器
初始化容器的生命周期事件处理器,并发布容器的生命周期事件
destroyBeans();
取消刷新操作,充值容器的同步标识
此方法完成一些基础的准备工作,例如设置时间、设置启动关闭标志、检查环境变量、并提供子类扩展,用来将属性注入到ApplicationContext中、设置事件监听器集合
getBeanFactory()AbstractRefreshableApplicationContext
prepareRefresh()AbstractApplicationContext
prepareBeanFactory(beanFactory)
为容器的某些子类指定特殊的Post事件处理器
调用所有注册的BeanFactoryPostProcessor的Bean
AbstractBeanDefinition
BeanDefinitionParserDelegate对象
ClassPathXmlApplicationContext、FileSystemApplicationContext
Document
构建BeanDefinition入口
资源定位
processAliasRegistration(Element ele)DefaultBeanDefinitionDocumentReader
0 条评论
下一页