IOC:全称Inversion of Control,中文释义为控制反转。
简单地说,IOC就是把对象的实例化工作交由Spring容器来完成。IOC可以说是一种思想,传统的应用程序是我们自己去创建(new)对象,为"正转",而IOC是将创建对象的工作交给Spring容器,对象是被动的被Spring容器创建,即为“反转”,“控制”即为Spring容器控制对象的创建。
DI:全称Dependence Injection。中文释义为依赖注入。依赖:
public class A{
private B b;
}
此时称A依赖于B。
而DI可以说是IOC的一种具体实现,在Spring创建对象的过程中,将对象依赖的属性注入到对象中,即创建A对象时将其依赖的B对象也一并创建并注入到A对象中。由于控制反转概念比较含糊(可能只是理解为容器控制对象这一层面,很难让人想到谁来维护对象关系),所以2004年大师级人物Martin Fowler又给出了一个新的名字:“依赖注入”,相对IOC 而言,“依赖注入”明确描述了“被注入对象依赖IOC容器配置依赖对象”。