SpringIOC加载时序图
2020-12-16 17:55:41 0 举报
SpringIOC加载时序
作者其他创作
大纲/内容
prepareBeanFactory(ConfigurableListableBeanFactory beanFactory)
getConfigLocations()
createBeanFactory()
重置“active”标志
XmlBeanDefinitionReader(BeanDefinitionRegistry registry)
refresh()
创建读取Xml配置文件的BeanDefinition阅读器
返回内部bean工厂对象
finishBeanFactoryInitialization(ConfigurableListableBeanFactory beanFactory)
注册bean的后置处理器,用于干预bean的实例化过程
加载
initBeanDefinitionReader(XmlBeanDefinitionReader reader)
destroyBeans()
设置应用程序配置的位置this.configLocations = new String[locations.length];for (int i = 0; i < locations.length; i++) { this.configLocations[i] = resolvePath(locations[i]).trim();}
postProcessXml(Element root)
调用生命周期处理器,发布相应的事件
BeanDefinitionReaderUtils
解析替换方法子元素
BeanDefinitionParserDelegate
AbstractApplicationContext
解析bean元素
在指定的bean工厂方法中注册bean
closeBeanFactory()
root.getChildNodes()
Loop
初始化事件多路广播器
finally
准备刷新上下文设置时间、切换状态、初始化应用监听器、事件容器
解析bean,将其注册到注册表中
从指定的XML文件加载
hasBeanFactory()
Opt
异常处理
解析属性子元素
doRegisterBeanDefinitions(Element root)
resetCommonCaches()
loadBeanDefinitions(XmlBeanDefinitionReader reader)
将bean定义加载到给定的bean工厂中
initApplicationEventMulticaster()
实际上是从指定的XML文件加载定义的bean
AbstractRefreshableConfigApplicationContext
loadBeanDefinitions(String location)
XmlBeanDefinitionReader
使用配置的DocumentLoader加载指定文件
从指定的资源位置加载
registerListeners()
DefaultListableBeanFactory
resourceLoader instanceof ResourcePatternResolver
obtainFreshBeanFactory()
获得bean工厂对象
解析bean元素,不考虑名称或别名
准备上下文中使用的bean工厂
onRefresh()
根据文档类型定义标准解析
定制bean工厂对象
使用reader加载BeanDefinition
解析默认元素
解析限定符子元素
注册root元素中的bean
解析lookup-override子元素
解析meta元素
加载或刷新配置
loadBeanDefinitions(EncodedResource encodedResource)
子类中的某些特殊初始化,以下是实现的子类:AbstractRefreshableWebApplicationContextGenericWebApplicationContextStaticWebApplicationContext
refreshBeanFactory()关闭前一个bean工厂对象,创建新一轮bean工厂对象
finishRefresh()
重置Spring的通用反射元数据缓存
实例化所有所有剩余的单例bean
解析bean元素属性
postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory)
DefaultBeanDefinitionDocumentReader
根据root级别分析内容
bean工厂赋值this.beanFactory = beanFactory
AbstractBeanDefinitionReader
删除已经创建的单例
loadBeanDefinitions(DefaultListableBeanFactory beanFactory)
customizeBeanFactory(DefaultListableBeanFactory beanFactory)
某些子类指定特殊的事件处理器(提供实现BeanPostProcessor使用)以下是实现的子类:AbstractRefreshableWebApplicationContextGenericWebApplicationContextResourceAdapterApplicationContextStaticWebApplicationContext
创建bean工厂对象
初始化消息源(国际化)
获取应用程序配置的位置
注册事件监听器
ClassPathXmlApplicationContext
prepareRefresh()
loadBeanDefinitions(String... resources)
registerBeanPostProcessors(ConfigurableListableBeanFactory beanFactory)
解析builder-arg子元素
AbstractXmlApplicationContext
getBeanFactory()
cancelRefresh(BeansException ex)
initMessageSource()
parseBeanDefinitionElement(Element ele)
preProcessXml(Element root)
自定义预处理
setConfigLocations(@Nullable String... locations)
AbstractRefreshableApplicationContext
实例化并调用所有已注册的BeanFactoryPostProcessor的Bean
定位
创建新的解析器委托
注册
阅读器的自定义初始化
自定义后处理
关闭bean工厂对象
invokeBeanFactoryPostProcessors(ConfigurableListableBeanFactory beanFactory)
loadBeanDefinitions(Resource resource)
收藏
0 条评论
回复 删除
下一页