Spring IOC(Inversion of Control) :控制反转
- Spring Core最核心的部分
- 了解它之前先来了解一下依赖注入(Dependency Inversion)
在了解DI之前,我们先来了解一下原始的设计,即上层建筑依赖下层建筑(以设计行李箱为例)
这样的设计看上没什么问题,但是可维护性极差。
假如根据市场变动轮子要改,那么底盘,箱体,行李箱都得改
我们可以通过代码来看一下这种上层建筑依赖下层建筑的致命之处
假如现在要动态修改轮子的大小
可以看到仅仅改边轮子大小这一小小需求,所有依赖的上层建筑都要发生改边,假如一个类的上层建筑是几千个类,那么这个类发生改边,带来的结果是奔溃的。于是便出现了依赖注入。
依赖注入(DI):把底层作为参数传递给上层类,实现上层对下层的”控制“。即通过控制反转,由原始的下层控制上层变成了上层控制下层
代码分析
此时轮子再进行变动时,对上层没有丝毫的影响
IOC:IOC是一种设计模式,是一种思想,而DI就好比是实现IOC的一种方式
因为采用了依赖注入,不可避免的是要频繁地使用new来创建对象
IOC容器的出现便是为了解决这个问题,通过IOC容器可以来管理大量的对象