IOC:Inversion Of Control,即控制反转,是一种设计思想。
在传统的Java SE程序设计中,我们直接在对象内部通过new的方式来创建对象,是程序主动创建依赖对象;
而在Spring程序设计中,IOC是有专门的容器去控制对象。
所谓控制就是对象的创建、初始化、销毁。
- 创建对象:原来是 new 一个,现在是由 Spring 容器创建。
- 初始化对象:原来是对象自己通过构造器或者 setter 方法给依赖的对象赋值,现在是由 Spring 容器自动注入。
- 销毁对象:原来是直接给对象赋值 null 或做一些销毁操作,现在是 Spring 容器管理生命周期负责销毁对象。
总结:IOC解决了繁琐的对象生命周期的操作,解耦了我们的代码。
所谓反转
其实是反转的控制权,前面提到是由Spring来控制对象的生命周期,那么对象的控制就完全脱离了我们的控制,控制权交给了Spring 。
这个反转是指:我们由对象的控制者变成了IOC的被动控制者。