天天看点

理解"IOC(控制反转)和DI(依赖注入)"

今天中午吃饭的时候,和同事闲聊,聊着聊着聊到了IOC(控制反转)和DI(依赖注入),感觉各有各的说法:

今天下班了,就来重新总结一下IOC(控制反转)和DI(依赖注入),以便于理解:

1. 首先来说一说IOC(控制反转)

说这个控制反转按字分为两段来说:

  • 第一段就来说说控制

    在传统的java ee项目设计中,我们都是在对象内部使用new进行创建对象,是程序主动去创建依赖对象,但是在IOC中都是使用IOC容器来创建这些对象,控制这些对象,那么控制了什么呢,它主要是控制了外面资源的获取

  • 第二段就来说说反转

    首先它说是反转,我们都知道有反必有正,那么正转有是什么呢,所谓正转,就是传统应用程序是由我们程序猿手动的在对象中主动控制,直接获取依赖对象,这就是正转,反转则是:由IOC(容器)帮我们查找注入依赖对象,对象被动的接受依赖对象,反转则是这样的,那么反转了什么,只是依赖对象的获取被反转了

2.再来说一说DI(依赖注入)

DI:组件之间依赖关系由容器在运行期决定,即由容器动态的将某个依赖关系注入到组件之中

就以 “依赖注入” 这几个字,深入理解一下:

  • 谁依赖谁:应用程序依赖于IOC容器
  • 为什么依赖:应用程序需要IOC容器来提供对象需要的资源
  • 谁注入谁:IOC容器注入应该程序依赖的对象
  • 注入了什么:注入了依赖对象所需要的资源

继续阅读