IOC容器
IOC是 Inversion ofcontrol的简写,译为“控制反转”,它不是一门技术,而是一种设计思想,是一个重要的面向对象编程法则,能够指导我们如何设计出松耦合、更优良的程序
Spring通过IOC容器来管理所有Java对象的实例化和初始化,控制对象与对象之间的依赖关系
IOC容器管理的Java对象被称为Spring Bean,它与使用关键字new创建的对象没有任何区别
lOC 容器是 Spring 框架中最重要的核心组件之一,它贯穿了 Spring 从诞生到成长的整个过程
(配置文件)过程:
1.在xml配置文件中配置Bean的定义信息(BeanDefinition)
在配置文件中配置好这个类我要什么样的对象,将该信息交给IOC,由IOC创建并返回,这就是Bean的定义信息
2.加载读取bean的定义信息
这一过程用一个接口:BeanDefinitionReader(根据该接口的不同实现类去读取实现)
3.IOC容器中有了Bean的定义信息,对Bean进行实例化(Beanfactory工厂 + 反射),然后对对象进行初始化最终得到了一个可以使用的对象
控制反转
-
控制反转是一种思想
-
控制反转是为了降低程序耦合度,提高程序扩展力
-
控制反转,反转的是什么?
将对象的创建权利交出去,交给第三方容器负责
将对象和对象之间关系的维护权交出去,交给第三方容器负责 -
控制反转这种思想如何实现呢?
Dl(DependencyInjection):依赖注入
依赖注入
Dl(DependencyInjection): 依赖注入,依赖注入实现了控制反转的思想
依赖注入:
指Spring创建对象的过程中,将对象依赖属性通过配置进行注入依赖注入常见的实现方式包括两种:
第一种:set注入
第二种:构造注入
所以结论是:IOC就是一种控制反转的思想,而 DI是对loc的一种具体实现。
Bean管理说的是:Bean对象的创建,以及Bean对象中属性的赋值(或者叫做Bean对象之间关系的维护)。
IOC容器在Spring的实现
IOC容器中管理的组件也叫做 bean。在创建 bean 之前,首先需要创建lOC容器。Spring 提供了loC 容器的两种实现方式:
①BeamFactory
这是IOC容器的基本实现,是 Spring 内部使用的接口。面向 Spring本身,不提供给开发人员
使用
②ApplicationContext
BeanFactory的子接口,提供了更多高级特性。面向 Spring的使用者,几乎所有场合都使用 Applicationcontext而不是底层的 BeanFactory。
③Applicationcontext的主要实现类