IOC - Inversion of control,即“控制反转”,不是什么技术,而是一种设计思想。在java开发中,IOC意味着将你设计好的对象交给容器管理,而不是传统的在你的对象内部直接控制。理解IOC的关键是要明确:“谁控制谁,控制了什么?神马是反转,哪些方面反转了?”
(1)谁控制谁,控制了什么:传统javaSE程序设计,我们直接在对象内部通过new进行创建对象,是程序主动去主动创建以来对象;而IOC是有专门的一个容器来创建这些对象,即由IOC容器来控制对象的创建;谁控制谁?当然是IOC容器控制了对象;控制了什么?主要是控制了外部资源的获取。
(2)神马是反转,哪些方面反转了:有反转就有正转,传统应用程序是由我们自己在对象中主动控制去直接获取依赖对象,也就是正转。而反转则是由容器来帮忙创建及注入依赖对象;神马是反转?由容器帮我们查找及注入依赖对象,对象只是被动的接受依赖对象,即为反转;哪些方面反转了?依赖对象的获取被反转了,即从以前的A a = new A()获取,变成了,由IOC容器去提供,我们在代码中不再使用new去获取对象了。这就是反转。
(1)谁控制谁,控制了什么:传统javaSE程序设计,我们直接在对象内部通过new进行创建对象,是程序主动去主动创建以来对象;而IOC是有专门的一个容器来创建这些对象,即由IOC容器来控制对象的创建;谁控制谁?当然是IOC容器控制了对象;控制了什么?主要是控制了外部资源的获取。
(2)神马是反转,哪些方面反转了:有反转就有正转,传统应用程序是由我们自己在对象中主动控制去直接获取依赖对象,也就是正转。而反转则是由容器来帮忙创建及注入依赖对象;神马是反转?由容器帮我们查找及注入依赖对象,对象只是被动的接受依赖对象,即为反转;哪些方面反转了?依赖对象的获取被反转了,即从以前的A a = new A()获取,变成了,由IOC容器去提供,我们在代码中不再使用new去获取对象了。这就是反转。