今天中午吃饭的时候,和同事闲聊,聊着聊着聊到了IOC(控制反转)和DI(依赖注入),感觉各有各的说法:
今天下班了,就来重新总结一下IOC(控制反转)和DI(依赖注入),以便于理解:
1. 首先来说一说IOC(控制反转)
说这个控制反转按字分为两段来说:
-
第一段就来说说控制
在传统的java ee项目设计中,我们都是在对象内部使用new进行创建对象,是程序主动去创建依赖对象,但是在IOC中都是使用IOC容器来创建这些对象,控制这些对象,那么控制了什么呢,它主要是控制了外面资源的获取
-
第二段就来说说反转
首先它说是反转,我们都知道有反必有正,那么正转有是什么呢,所谓正转,就是传统应用程序是由我们程序猿手动的在对象中主动控制,直接获取依赖对象,这就是正转,反转则是:由IOC(容器)帮我们查找注入依赖对象,对象被动的接受依赖对象,反转则是这样的,那么反转了什么,只是依赖对象的获取被反转了
2.再来说一说DI(依赖注入)
DI:组件之间依赖关系由容器在运行期决定,即由容器动态的将某个依赖关系注入到组件之中
就以 “依赖注入” 这几个字,深入理解一下:
- 谁依赖谁:应用程序依赖于IOC容器
- 为什么依赖:应用程序需要IOC容器来提供对象需要的资源
- 谁注入谁:IOC容器注入应该程序依赖的对象
- 注入了什么:注入了依赖对象所需要的资源