springBean解析过程
1、大体解析过程
- spring 是一个框架 ,在我们的整个开发流程中,所有的框架生产几乎都依赖与spring.
- spring帮我们起到了一个IOC容器的作用,用来承载整体的bean对象
- 帮我们进行了整个对象从创建到销毁的整个生命周期的管理
- 配置文件-ioc容器创建
- BeanFactory-xmlBeanFactory-beanFactoryPostprocessor-classPathResource-BeanDefinitionReader-xmlBeanDefinitionReader-loadBeanDefinitions
2、xmlBeanFactory
- xmlBeanFactory 继承与DefaultlistableBeanFactory,而 DefaultlistableBeanFactory
- 是整个bean加载的核心部分。是spring 注册及加载bean的默认实现。
- 对于xmlBeanFactory 和 DefaultlistableBeanFactory的不同之处在于,xmlBeanFactory使用了自定义的xml读取器xmlBeanDefinitionReader。实现个性化的读取。
3、xmlBeanDefinitionReader
- xmlBeanDefinitionReader继承abstracteanDefinitionReader,来使用resourceloader将资源文件转换为对应的resource文件。通过documentLoader对resource文件进行转换,将resource转换为document文件。通过DefaultBeanDefinitionDocumentReader对document解析。
4、Beanfactory和ApplicationContext俩种IOC的区别
- Beanfactory 不具备对资源定义的能力。ApplicationContext可以。
- ApplicationContext 允许上下文嵌套。这块可以在bean的查找中体现。首先检查当前上下文,其次是父上下文,逐级向上。
- ApplicationContext许多抽象子类为beanFactory的实现。比如classpathxmlapplicationcontext.
5、bean标签的解析与注册
- 方法processBeanDefinition(Element ec ,BeanDefinitionParserDelegate delegate )
- 这里设计到一个类BeanDefinitionParserDelegate
通过delete.parseBeanDefinitionElement()方法进行元素解析。返回BeanDefinitionHolder类型的实例。

6、总结
- spring 启动时,调用refresh();->configurableListableBeanFactory--映射BeanDefinition内容;
- invokeBeanFactoryPostProcessor 修改BeanDefinition内容;->finishBeanFactoryInit 实例化