栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

控制反转(Ioc)与依赖注入(DI)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

控制反转(Ioc)与依赖注入(DI)

1、什么是控制反转(Ioc)

Ioc 是 Inversion of Control 的缩写,译为“控制反转”,还有的译为“控制反向”或者“控制倒置”。

在面向对象传统编程方式中,获取对象的方式通常是用new关键字主动创建一个对象。Spring中的Ioc方式对象的生命周期由Spring框架提供的Ioc容器来管理,直接从Ioc容器中获取一个对象,控制权从应用程序交给了Ioc容器。

Ioc理论上是借助于“第三方(代理)”实现具有依赖关系对象之间的解耦。即把各个对象类封装之后,通过Ioc容器来关联这些对象类。这样对象与对象之间就通过Ioc容器进行联系,而对象与对象之间没有直接联系。

应用程序在没有引入Ioc容器之前,对象A依赖对象B,那么A对象在实例化或者运行到某一点的时候,自己必须主动创建对象B或者使用已经创建好的对象B,其中无论是创建还是使用已创建的对象B,控制权都在应用程序本身。如果应用程序引入了Ioc容器之后,对象A和对象B之间失去了直接联系,那么当对象A实例化和运行时,如果需要对象B,Ioc容器就会主动创建一个对象B注入(依赖注入)到对象A所需要的地方。由此,对象A获得依赖对象B的过程,由主动行为变成了被动行为,即把创建对象交给了Ioc容器来处理,控制权也就颠倒过来了,这就是所谓的控制反转。

2、什么是依赖注入(DI)

DI 是 Dependency Inject 的缩写,译为“依赖注入”。所谓依赖注入,就是由Ioc容器在运行期间动态地将某种依赖关系注入到对象之中。例如,将对象B 注入(赋值)给对象A的成员变量。

事实上,依赖注入(DI)和控制反转(Ioc)是对同一件事情的不同描述,从某个方面讲,就是它们描述的角度不同。依赖注入是从应用程序的角度来描述,即应用程序依赖容器创建并注入它所需要的外部资源;而控制反转是从容器的角度来描述,即容器控制应用程序,由容器反向地向应用程序注入应用程序所需要的外部资源。(这里说的外部资源可以是外部实例对象,也可以是外部文件对象等)

3、Ioc/DI的实现

Spring框架的主要功能是通过其核心容器来实现的。Spring框架提供的两种核心容器分别是BeanFactory和ApplicationContext。Ioc/DI通常有setter(设置)注入和构造方法注入两种实现方式。

《Spring+Spring MVC + Mybats 从零开始学(第二版)吴为胜 杨章伟 清华大学出版社》

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/713629.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号