您的位置:首页 > 编程语言 > Java开发

Java面试-Spring IOC(控制反转)和DI(依赖注入)

2016-10-04 23:18 471 查看

IOC

Ioc(Inversion of Control)翻译成中文就是“控制反转”,一个比较晦涩的词语。如果要真正理解这个词语,必须要用过Spring框架才行,因为Spring开启了一种新的编程方式。

传统的编程方式: 所有的对象和资源都是由开发人员来控制,由你来决定什么时候new一个对象,什么时候申请资源、使用资源、释放资源。

使用Spring框架: 开发人员提供一个清单给Spring,然后对象的整个生命周期都是由Spring框架来管理,一个对象中引用的资源、引用的其他对象也都是由Spring框架来管理。

深入剖析一下“控制反转”这个词:

控制: 控制指的是控制外部资源的获取、控制对象的生命周期。

反转: 刚开始流行的是由开发人员操纵一切,现在变了,由Spring框架来控制程序中的外部资源、控制对象的生命周期等。所以取名“反转”,即控制的权利由开发人员转移到了Spring框架。由Spring框架帮我创建我们对象中依赖的对象,我们的对象只能被动的接受。

IOC的好处就是解耦,对象和对象之间的耦合度变低了,便于测试、便于功能复用。

DI

DI(Dependency Injection)翻译成中文叫做“依赖注入”,既然对象的整个生命周期都是由Spring框架来维护的,那么我的这个对象中引用了另一个对象,你打算怎么办?Spring框架自然考虑到这一点了。“依赖注入”这两个词语也要拆开来讲:

依赖: 我的A对象中引用了B对象,也就是说A对象依赖B对象。你要通过配置文件告诉Spring你的对象之间的依赖关系。

注入: 你的对象已经交给Spring管理了,你也告诉Spring你的对象之间的依赖关系了,那么在合适的时候,由Spring把你依赖的其他对象(或者资源、常量等)注入给你。

总结就是,把所有的控制权交给Spring,由Spring帮你创建对象、帮你维护对象之间的依赖关系。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java spring 面试 ioc