Spring IoC(控制反转)和DI(依赖注入)的理解
2017-08-10 15:42
489 查看
接触过spring的对IOC和DI绝对不会陌生,但是对于初学者来说这两个词的概念是比较模糊的。今天我和大家分享一下我对spring框架中IOC和DI的理解。
IOC(控制反转)
首先IOC(Ioc—Inversionof Control)是一个思想,是来帮助我们设计出松耦合、可调性更高的程序。下面我举一个例子来说明一下什么是IOC。
比如说我们在A对象中new了一个B对象,那么我们就可以说A是依赖于B的,当我们想要用B的时候就new出来就好了。也就说B的创建控制权在A对象上。现在有了IoC容器后,对象的创建和查找依赖对象的权利就交给了容器,当A对象想要使用B对象时,我们就去容器拿就好了。因为容器进行注入组合对象,所以A对象与B对象之间是松散耦合。
现在再来看,原来创建B对象的权利是A对象,现在变成了IOC容器了,这就是控制发生反转了。
DI(依赖注入)
DI(DependencyInjection)其实它们是同一个概念的不同角度描述 ,由于控制反转概念对spring理解比较含糊,所以有人提出了依赖注入这个说法。那么我们来看看用依赖注入如何理解上面的例子。
一开始B对象是在A被创建的,A是依赖B对象的,容器出现后,A对象就不直接依赖于B了,而是通过容器把B注入给A使用,我们就可以理解为A不在依赖B对象,而是“依赖”“容器注入”这么一个功能,A想用B,那么只有注入后才能使用,依赖注入的名字就这么来的。
IOC(控制反转)
首先IOC(Ioc—Inversionof Control)是一个思想,是来帮助我们设计出松耦合、可调性更高的程序。下面我举一个例子来说明一下什么是IOC。
比如说我们在A对象中new了一个B对象,那么我们就可以说A是依赖于B的,当我们想要用B的时候就new出来就好了。也就说B的创建控制权在A对象上。现在有了IoC容器后,对象的创建和查找依赖对象的权利就交给了容器,当A对象想要使用B对象时,我们就去容器拿就好了。因为容器进行注入组合对象,所以A对象与B对象之间是松散耦合。
现在再来看,原来创建B对象的权利是A对象,现在变成了IOC容器了,这就是控制发生反转了。
DI(依赖注入)
DI(DependencyInjection)其实它们是同一个概念的不同角度描述 ,由于控制反转概念对spring理解比较含糊,所以有人提出了依赖注入这个说法。那么我们来看看用依赖注入如何理解上面的例子。
一开始B对象是在A被创建的,A是依赖B对象的,容器出现后,A对象就不直接依赖于B了,而是通过容器把B注入给A使用,我们就可以理解为A不在依赖B对象,而是“依赖”“容器注入”这么一个功能,A想用B,那么只有注入后才能使用,依赖注入的名字就这么来的。
相关文章推荐
- Spring 深入理解IOC(控制反转)和DI(依赖注入)
- 【转】跟我一起学Spring 3(4)–深入理解IoC(控制反转)和DI(依赖注入)
- 如何理解spring中的IOC(控制反转)、DI(依赖注入)?
- Spring IoC(控制反转)和DI(依赖注入)的理解
- Spring IoC和DI(反转控制和依赖注入)原理
- Spring的IOC(控制反转)和DI(依赖注入)
- Spring_01 spring容器、控制反转(IOC)、依赖注入(DI)
- PHP 依赖注入(DI)和控制反转(IoC)简单理解
- Spring IOC(控制反转)和DI(依赖注入)
- 依赖注入(DI)和控制反转(IOC)的理解,写的太好了。
- 如何理解Spring的控制反转IOC和依赖注入DI思想
- Java面试-Spring IOC(控制反转)和DI(依赖注入)
- Spring---IOC(控制反转)和DI(依赖注入)
- Spring——DI(依赖注入)/Ioc(控制反转)
- 切面(aop)控制反转和依赖注入(IOC,DI)和spring的事务隔离和传播行为
- spring IOC(控制反转)和DI(依赖注入)以及三种依赖注入方式的比较
- Spring的IoC(控制反转) 、DI(依赖注入)
- 谈谈对Spring 控制反转(IOC)及依赖注入(DI)的理解
- 【Spring】Spring的IOC(控制反转)/DI(依赖注入)原理(二):模拟Spring加载配置文件
- Spring 使用注解的方式实现IOC和DI(控制反转和依赖注入)