Spring的IoC容器系列

  1. IoC容器为开发者管理对象之间的依赖关系提供了很多便利基础服务
  2. 有许多IoC容器供开发者选择,SpringFramework的IoC核心就是其中一个,它是开源的。
  3. 那么具体什么是IoC容器呢?
  4. 它在Spring框架中到底长什么样?
  5. 其实对IoC容器的使用者来说,我们经常接触的BeanFacotory和ApplicationContext都可以看成是容器的具体表现形式。
  6. 如果深入到Spring的实现中去看,我们常说的IoC容器,实际上代表着一系列功能各异的容器产品,只是容器的功能有大有小,有各自的特点。
  7. 我们以水桶为例,在商店中出售的水桶有大有小,制作材料有各部相同,有金属的、熟料的等,总之格式各样的,但只要能装水,具备水桶的基本特性,那就可以作为水桶来出售,让用户使用。
  8. 这在Spring中也一样,Spring有格式各样的IoC容器的实现共用户选择和使用。
  9. 使用什么样的容器完全取决于用户的需要,但在使用之前如果能够了解容器的基本情况,那对容器的使用是非常有帮助的,就像我们在购买商品前对商品进行考察和挑选那样。
  10. 就像商品需要有产品规格说明一样,同样,作为IoC容器,也需要为它的具体实现指定基本的功能规范,这个功能规范的设计表现为接口类BeanFactory,它体现了Spring为提供给用户使用的IoC容器所设定的最基本的功能规范。
  11. 那对Spring的具体的IoC容器实现来说,它需要满足的基本特性是什么呢?它需要满足BeanFactory这个基本的接口定义,所以在图中可以看到这个BeanFactory接口在集成体系中的地位,它是作为一个最基本的接口类出现在Spring的IoC容器体系中的。
  12. 在这些Spring提供的基本的IoC容器接口定义实现的基础上,Spring通过定义BeanDefinition来管理基于Spring的应用中的各种对象以及它们之间的相互依赖关系
  13. BeanDefinition抽象了我们队Bean的定义,是让容器起作用的主要数据类型。
  14. 我们都知道,在计算机世界里,所有的功能都是建立在通过数据对现实进行抽象的基础上的。
  15. IoC容器是用来管理对象依赖关系的,对IoC容器来说,BeanDefinition就是对依赖反转模式中管理的对象依赖关系的数据抽象,也是容器实现依赖反转功能的核心数据结构,依赖反转功能都是围绕对这个BeanDefinition的处理来完成的。
  16. 这些BeanDefinition就像是容器里装的水,有了这些基本数据,容器才能够发挥作用。
  17. 同时,在使用IoC容器时,了解BeanFactory和ApplicationContext之间的区别对我们理解和使用IoC容器也是比较重要的。弄清楚这两种容器之间的区别和联系,意味着我们具备了辨别容器系列中不同容器产品的能力
  18. 还有一个好处就是,如果需要定制特定功能的容器实现,也能够比较方便地在容器系列中找到一款恰当的产品作为参考不需要重新设计。
posted @ 2014-08-24 14:57  行者无疆Duffy  阅读(195)  评论(0)    收藏  举报