对Spring的IOC 的理解

112 阅读2分钟

我想大家对spring的IOC和AOP应该都不陌生了吧,今天我就来说说自己的个人理解,欢迎各位大佬给出宝贵意见。

image.png

我个人理解下:

Spring的 IOC

解决的是对象管理和对象依赖的问题。本来是我们自己手动new出来的对象,现在则把对象交给Spring的IOC容器管理。IOC容器可以理解为一个对象工厂,我们都把该对象交给工厂,工厂管理这些对象的创建以及依赖关系,等我们需要用对象的时候,从工厂里边获取就好了。

「控制反转」和「注入依赖」

我认为「控制反转」指的就是:把原有自己掌控的事交给别人去处理,它更多的是一种思想或者可以理解为设计模式。比如:本来由我们自己new出来的对象,现在交由IOC容器,把对象的控制权交给它方了。

「依赖注入」在我的理解下:它其实是「控制反转」的实现方式,对象无需自行创建或者管理它的依赖关系,依赖关系将被「自动注入」到需要它们的对象当中去

image.png

我们交由Spring IOC容器管理主要的好处在于‘将对象集中统一管理’并且‘降低耦合度’。

比如说:我用Spring IOC 可以方便单元测试、创建对象等等,什么都能交给Spring IOC,实际上自己new出来的对象都可以解决上面的问题,但是这得需要你自己进行管理,可能得手写工厂来实现一堆的东西才能满足需求。

但很有可能我们写完之后其本质上还是Spring的那一套,而这些Spring已经都实现了的,根本不需要这么复杂的东西了。

如果项目里的对象都是就new下,没有多个实现类,那不用Spring也没啥问题,并且Spring核心不仅仅IOC啊,除了把对象创建出来,还有一整套的Bean生命周期管理。比如:你要实现对象增强,AOP不就可以实现吗?不然还得我们自己去创建代理。。。

image.png

以上就是我对spring IOC 的个人理解,spring的功能还是很强大的,接下来我们在谈谈对于spring aop的理解。