refresh()第二步: BeanDefinition 加载、解析、注册子流程
2021-05-01 19:09:54 0 举报
登录查看完整内容
BeanDefinition 加载、解析、注册⼦流程:【AbstractApplicationContext.obtainFreshBeanFactory()】 1)创建新的 BeanFactory(默认创建 DefaultListableBeanFactory) 2)加载配置文件:读取xml 信息,将xml 信息保存到 Document对象中 3)解析配置文件 --> BeanDefinition 4)注册beanDefinition 到 注册表中
作者其他创作
大纲/内容
DefaultListableBeanFactory#registerBeanDefinition
2)加载配置文件:读取xml 信息,将xml 信息保存到 Document对象中
AbstractApplicationContext#obtainFreshBeanFactory()
3)【解析 bean 元素为 BeanDefinition】,但是此时返回的是 BeanDefinitionHolder 对象其实这一步是将解析出来的 BeanDefinition 又进行了一层包装,包装成了一个 BeanDefinitionHolder 对象
DefaultBeanDefinitionDocumentReader#parseBeanDefinitions
AbstractXmlApplicationContext#loadBeanDefinitions
DefaultBeanDefinitionDocumentReader#registerBeanDefinitions
DefaultBeanDefinitionDocumentReader#doRegisterBeanDefinitions
XmlBeanDefinitionReader#doLoadBeanDefinitions
1)创建新的 BeanFactory(默认创建 DefaultListableBeanFactory)
XmlBeanDefinitionReader#loadBeanDefinitions
BeanDefinition 加载、解析、注册⼦流程:【AbstractApplicationContext.obtainFreshBeanFactory()】1)创建新的 BeanFactory(默认创建 DefaultListableBeanFactory)2)加载配置文件:读取xml 信息,将xml 信息保存到 Document对象中3)解析配置文件 --> BeanDefinition4)注册beanDefinition 到 注册表中
BeanDefinitionReaderUtils#registerBeanDefinition
AbstractRefreshableApplicationContext#refreshBeanFactory()
DefaultBeanDefinitionDocumentReader#parseDefaultElement
XmlBeanDefinitionReader#registerBeanDefinitions
开始注册 BeanDefinition 对象
AbstractBeanDefinitionReader#loadBeanDefinitions
DefaultListableBeanFactory#beanDefinitionMap
DefaultBeanDefinitionDocumentReader#processBeanDefinition
4)注册beanDefinition 到 注册表中所谓的注册,其实就是将解析出来的 BeanDefinition对象存入到一个map中这个map是DefaultListaableBeanFactory 工厂的成员属性:key:beanName value:BeanDefinition 对象
根据指定的BeanFactory创建一个新的 XmlBeanDefinitionReader 对象用于解析配置文件
0 条评论
回复 删除
下一页