Spring IOC(Inversion of Control)控制反转是将对象的创建权 和对象之间依赖关系的维护权,从程序员的业务代码中转移到由Spring IOC容器中,程序员就不再手动控制了。
需要说明的是,Spring IOC是一种设计思想 ,不是一个具体的技术 ,Spring IOC 的具体落地实现是通过依赖注入(Dependency Injection) 完成的。
依赖注入的方法有构造器注入 、setter注入 和接口注入三种。
那控制反转它控制的是什么呢?
其实就是控制的是对象的创建过程 ,Spring IOC容器会根据配置文件来创建对象。
那反转的是什么呢?
反转的是创建对象 并且为这个要创建的对象 注入它所依赖的对象这个动作的主动权。
传统开发过程是由程序员主动new一个对象,手动注入依赖,Spring IOC是将这个动作交给容器来自动完成,这样主动权就发生了反转。
举个🌰说明一下:
比如对象A依赖对象B,那在创建对象A的代码里,我们就需要写好应该如何创建对象B,只有这样才能创建一个完整的对象A。
但是,反转之后,这个动作就会由Spring IOC容器去触发,容器在创建对象A的时候,发现对象A它依赖对象B,根据配置文件,容器就会创建对象B,然后将对象B注入到对象A中。
这里要注意一下,例子中的是注入一个对象 ,其实还可以注入配置文件中的一个值、集合等等。