谈谈spring的IOC和DI?
答:
- Ioc,控制反转;DI,依赖注入。
- Ioc意味着将你设计好的对象交给
容器控制
(创建,销毁,调用)。 - Di是组件之间
依赖关系
由容器在运行期
决定 - Ioc和DI其实是一种思想,并不是具体的技术。
- IoC 和 DI 有什么关系呢?其实它们是
同一个概念
的不同角度
描述。由于控制反转概念比较含糊(可能只是理解为容器控制对象
这一个层面,很难让人想到谁来维护对象关系),所以2004年大师级人物Martin Fowler又给出了一个新的名字:“依赖注入”。相对IoC 而言,“依赖注入”明确描述了“被注入对象依赖IoC容器配置依赖对象”。 - 最直接看到的效果就是,少New了几个类,基本看不到New关键字了。
- 比如,创建数据库连接上,整个项目创建连接时并不是当需要连接时new一个连接,而是项目在配置的时候创建好连接,当要用的时候,DI会给程序去用,而程序在什么时候用和怎么用时开发者不知道的,但最后还是实现了功能。