IOC容器获取Spring bean
分解成三个步骤,相互之间解耦
1. 资源定位
2. Bean Definition载入
3. Bean Definition注入
以XML配置文件的方式为例,记录整个过程
资源定位篇
- 输入:XML配置文件
- 输出:
Resource(org.springframework.core.io)
暂不深究Resource的细节,至少应包含了资源类型、配置文件类容。
Bean Definition载入篇
- 输入:
Resource
- 输出:
BeanDefinitionHolder(org.springframework.beans.factory.config)
BeanDefinitionHolder
中持有Bean Definition解析后的对象BeanDefinition
、Bean的名称、以alias。
BeanDeftinition
部分参数说明可见:http://blog.csdn.net/xianzhen376/article/details/49069867
数据转化流程:Resource
(InputStream) -> Document
-> BeanDefinition
Bean Definition注册篇
- 输入:
BeanDefinitionHolder
- 输出:
beanDefinitionMap
(org.springframework.beans.factory.support.DefaultListableBeanFactory)
注册解析出来的Bean,将内容记录在beanDefinitionMap中。
至此XML文件中定义的Bean就已经注入到IOC容器中。
附:细节部分后续详细总结,BeanDefinition载入过程有点意思。
参考:
1. 《Spring 技术内幕》 by 计文柯
2. Spring 4.0 源码