IOC控制反转:说的是创建对象实例的控制权从代码控制剥离到IOC容器控制,实际就是你在xml文件控制,侧重于原理。

DI依赖注入:说的是创建对象实例时,为这个对象注入属性值或其它对象实例,侧重于实现。
它们是spring核心思想的不同方面的描述。
DI IOC
DIIOC是差不多的概念。
一个重要特征是接口依赖,是把对象关系推迟到运行时去确定.

DI是一个初始化实例的过程,分为三种

1.setter based

2.constructor based

3.interface based,

spring 中就是应用前两种;但又不仅仅是初始化实例,而且是运用接口的概念去实现这种注入依赖。静态地看,只是依赖一个接口,但实际运行起来,是依赖一个实现了该 接口的具体类。

IOC就是面向接口编程的应用
1.一个通常的做法(非面向接口编程的方法),对象A依赖对象BB会作为A的属性,可以理解为A直接控制B;
2.IOC的做法,对象A依赖于接口C,而不直接依赖于实现了接口CB,也就是A不能直接控制是哪个具体实现了CB去做相应的事情,而是由我们控制可以由哪个实现了接口CB去处理,也就是控制反过来了,是由B来决定了,而不是由A,实现就是面向接口编程。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐