IoC(Inversion of Control)即控制反转/反转控制。它是一种思想不是个技术实现。描述的是:Java 开发领域对象的创建以及管理的问题。
例如:现有类 A 依赖于类 B
- 传统的开发方式:往往是在类 A 中手动通过 new 关键字来 new 一个 B 的对象出来。
- 使用 IoC 思想的开发方式:不通过 new 关键字来创建对象,而是通过 IoC 容器(Spring 容器)来帮助我们实例化对象。我们需要哪个对象,直接从 IoC 容器里面去取即可。
从以上两种开发方式的对比来说:我们”丧失了一个权利“(创建、管理对象的权利),从而得到了一个好处(不用再考虑对象的创建,管理等一系列的事情)。
为什么叫控制反转?
- 控制:指的是对象创建(实例化、管理)的权利
- 反转:控制权交给外部环境(IoC 容器)
讲一下ioc的定义以及作用