在 Spring IoC容器的设计中 ,有两个主要的容器系列 ,一个是实现BeanFactory接口的简单容器系列,这系列容器只实现了容器的最基本功能 ,另一个是ApplicalionContext应用上下文,它作为容器的高级形态而存在,在简单容器的基础上,增加了许多面向框架的特性,同时对应用环境作了许多适配。
那么具体什么是Spring IoC容器呢?他在spring框架中长什么样呢?
其实BeanFactory和ApplicationContext都可以看成是IoC容器的具体表现形式,我们通常所说的IoC容器, 实际上代表着一系列功能各异的容器产品,只是容器的功能有大有小,有各自的特点。Spring有各式各样的IoC容器的实现供用户选择和使用。
就像商品需要有产品规格说明一样,同样作为IoC容器, 也需要为它的具体实现指定基本的功能规范,这个功能规范的设计表现为接口类BeanFactory,它体现了Spring为提供给用户使用的IoC容器所设定的最基本的功能规范,如果把IoC容器看成一个水桶,那么这个BeanFactory就定义了可以作为水桶的基本功能,比如至少能装水,有个提手等。对Spring的具体IoC容器实现来说,它需要满足BeanFactory这个基本的接口定义,所以在图2-1中
4以看到这个BeanFactory接口在继承体系中的地位,它是作为一个最基本的接口类出现在Spring的IoC容器体系中。
在图2-1中的BeanDefinition是重要的,它是对依赖反转模式中管理的对象依赖关系的数据抽象,是容器实现依赖反转功能的核心数据结构,依赖反转功能都是围绕对这个BeaiiDefinition的处理来完成的,这些BeanDefinition就像是容器里裝的水,有了这些基本数据,容器才能够发挥作用。