IoC容器

IoC容器概述

依赖反转的概念:依赖对象的获得被反转了,基于该结论为控制反转创造了一个更好听的名字:依赖注入。依赖控制反转的实现方式有很多种,SpringIoC容器是实现该模式的载体,它可以在对象生成初始化直接将数据注入到对象中,也可以通过将对象引用注入到对象数据域中的方式来注入对方法调用的依赖。这种依赖注入是可以递归的,对象被逐层注入

应用控制反转后,当对象被创建时,由一个调用系统内的所有对象的外界实体将其所依赖的对象的引用传递给它,控制反转是关于一个对象如何获取它所依赖的对象的引用反转指的是责任的反转

通过使用IoC容器,对象的依赖关系的管理被反转了或者说是把资源的获取方式反转了,对象之间的相互依赖关系由IoC容器进行管理,并由IoC容器完成对象的注入。注入的主要实现方式有:接口注入setter注入构造器注入Springsetter注入和构造器注入是主要的注入方式,使用Springsetter注入是常见的注入方式。且Spring还提供了对特定依赖的检查

Spring IoC提供了一个基本的JavaBean容器,通过IoC容器管理依赖关系,并通过依赖注入和AOP切面增强了为JavaBean这样的POJO对象赋予事务管理、生命周期管理等基本功能。

IoC容器的设计与实现

Spring IoC容器的设计中,实现了BeanFactory接口的简单容器系列,该系列容器只实现了容器的最基本的功能;和容器的高级形态ApplicationContext应用上下文,两个主要的容器系列。BeanFactoryIoC容器具体实现的基本功能规范的设计表现

对于使用者来说,可将BeanFactoryApplicationContext看成容器的具体表现形式。通常所说的IoC容器实际上代表的是一系列功能各异的容器产品。Spring中有各种各样的IoC容器的实现。

在Spring提供的基本的IoC容器的接口定义和实现的基础上,Spring通过定义BeanDefinition来管理基本的Spring的应用中的各种对象以及它们之间的相互依赖关系BeanDefinition抽象了对Bean的定义是让容器起作用的主要数据类型。对于IoC容器来说,BeanDefinition就是对依赖反转模式中管理的对象依赖关系的数据抽象,也是容器实现依赖反转功能的核心数据结构依赖反转功能都是围绕对BeanDefinition的处理来完成的。

IoC容器接口设计图

BeanFactory接口定义了基本的IoC容器规范,从接口BeanFactoryHierarchicalBeanFactory再到ConfigurableBeanFactory是一条主要BeanFactory设计路径。HierarchicalBeanFactory接口增加了getParentBeanFactory()的接口功能,使BeanFactory具备了双亲IoC容器的管理功能ConfigurableBeanFactory接口主要定义了一些对BeanFactory配置功能。可设置双亲IoC容器配置Bean后置处理器等。