1. 准备
启动类
|
bean.xml
|
2. 开始分析
FileSystemXmlApplicationContext构造方法
|
AbstractApplicationContext.refresh
|
AbstractRefreshableApplicationContext.refreshBeanFactory
|
AbstractXmlApplicationContext.loadBeanDefinitions
|
AbstractXmlApplicationContext.loadBeanDefinitions
|
AbstractBeanDefinitionReader.loadBeanDefinitions
|
XmlBeanDefinitionReader.loadBeanDefinitions
|
XmlBeanDefinitionReader.doLoadBeanDefinitons
|
XmlBeanDefinitionReader.registerBeanDefinitions
|
DefaultBeanDefinitionDocumentReader.registerBeanDefinitions
|
DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions
|
DefaultBeanDefinitionDocumentReader.parseBeanDefinitions
|
DefaultBeanDefinitionDocumentReader.parseDefaultElement
|
DefaultBeanDefinitionDocumentReader.processBeanDefinition
|
BeanDefintionParserDelegate.parseBeanDefinitionElement
|
这里的解析一般都是按XML定义元素来解析的,可以和XML元素对应起来
BeanDefinitionParserDelegate.parseBeanDefinitionElement
|
具体的解析property等等属性就不继续往下追了,剩下就是具体解析了,一些propertyvalue,list,set解析的方法
3. 流程图分析
4. 总结
将静态的数据例如xml,转化为动态的数据结构BeanDefinition,如何载入,并且按spring的规则解析