首页 > 技术文章 > IOC与DI的区别

zdf159 2017-07-28 22:41 原文

一、IOC介绍

1.IOC是控制反转。

2.传统资源查找方式:要求组件向容器发起请求,查找资源作为回应,容器适时返回资源。

3.IOC查找方式:容器会主动将资源提供给它所管理的组件,组件只需要选择一个合适的方式来接收资源,也被称为查找的被动式。

4.创建对象实例的控制权从代码控制剥离到IOC容器控制(之前的写法,由程序代码直接操控使用new关键字),实际就是你在xml文件控制,控制权的转移是所谓反转,侧重于原理。

 

二、DI介绍

1.DI是依赖注入

2.IOC的另一种表达方式:组件以一些预先定义好的方式(如:setter方法)接收来自容器的资源注入。

3.相对于IOC而言,这种表述更加直接。

4.创建对象实例时,为这个对象注入属性值或其它对象实例,侧重于实现。

 

属性注入(最常用)

1.通过set方法注入Bean的属性值或依赖的对象。

2.name属性:制定Bean属性set方法后的属性名。

3.value属性值:可以使(value)子节点指定属性值。

 

构造器注入

1.通过构造器注入Bean属性值或依赖对象,它保证Bean实例在实例化后可以使用。

2.构造器注入在<constractor-arg>一样。

 

三、区别

1.它们是spring核心思想的不同方面的描述。

2.依赖注入和控制反转是对同一件事情的不同描述,从某个方面讲,就是它们描述的角度不同。

依赖注入是从应用程序的角度在描述,可以把依赖注入描述完整点:应用程序依赖容器创建并注入它所需要的外部资源;

而控制反转是从容器的角度在描述,描述完整点:容器控制应用程序,由容器反向的向应用程序注入应用程序所需要的外部资源。

推荐阅读