基本概念
- 控制反转(Inversion of Control, IoC):是Spring框架的核心,用来消减计算机程序的耦合问题。
- 依赖注入(Dependency Injection, DI):是IoC的另外一种说法,只是从不同角度描述相同的概念。
小例子:例如想吃面包了,在没有面包店和有面包店的情况下,会怎么做?在没有面包店时,最直观的做法可能自己按照自己的口味制作面包,也就是说面包需要主动制作。然而现在各种网店、实体店盛行,已经没有必要自己制作面包。想吃面包,去网店或实体店把自己的口味告诉店家,一会儿就可以吃到面包了。注意,面包不是自己制作的,而是由店家制作的,但是口味完全符合要求。
以上的小例子便包含了控制反转的思想,即把制作面包的主动权交给店家。
当Spring框架出现后,对象的实例不再由调用者来创建,而是由Spring容器来创建。Spring容器会负责控制程序之间的关系,而不是由调用者的程序代码直接控制。这样控制权由调用者转移到Spring容器,控制权发生了反转,这就是Spring的控制反转。
从Spring容器角度来看,Spring容器负责将被依赖对象赋值给调用者的成员变量,相当于为调用者注入它所依赖的实例,这就是Spring的依赖注入。