天天看点

IOC容器注入Spring bean——XML篇

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 源码