Spring-对IOC和AOP的自我见解

对于Spring,我们在学习它之前,就需要知道它的两大核心,IOC和AOP,博主就谈谈自己对这两大核心的看法和理解:

IOC

IOC,全称Inversion of Control,就是控制反转的意思,控制反转一种设计原则,它也是一种设计思想,可以用来降低代码之间的耦合度,在开发中,我们都追求“高内聚、低耦合”的代码,IOC就是对此问题的一种解决方式,Spring中的依赖注入(Dependency Injection,简称DI)就是对IOC的一种实现机制,通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体将其所依赖的对象的引用传递给它。也可以说,依赖被注入到对象中。

举个例子吧

在传统的三层架构如下:
在这里插入图片描述
我们发现如下三个类依次是强耦合的:
在这里插入图片描述
如果实现类少了一个,都不能通过程序的预编译,这就是它们之间的强耦合性,由此,IOC设计思想出现了,它的解决方案如下:
在这里插入图片描述
IOC的出现,让它们三个类之间的依赖被解开。

当然,直接这样看来,好像还是不能理解IOC,我们再看一下传统的三层架构之间的详细依赖关系:
在这里插入图片描述
IOC优化之后的依赖关系:
在这里插入图片描述
这时候,如果我们想要扩展或者更改一个实现类,我们会发现传统的方式,一定会更改原有的代码,但是我们也深刻的明白,更改原有代码是开发中的大忌,但是还是不得不这样做。

比如我们需要更换ADao的实现类,传统的方式如下:
在这里插入图片描述
我们通过IOC的方式,以Spring的配置文件为例:
在这里插入图片描述
这时候,我们就只需要更改Spring的配置文件即可,相对于原来传统的方式,这样的方式是不是更值得使用呢?我们使用这种方式,都没有直接更改原有的代码,这种方式更利于我们程序的维护与扩展。

AOP

AOP,Aspect Oriented Programming,就是面向切面编程,它是面向对象OOP的一种延续,它是通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。

还是以三层架构为例吧

在这里插入图片描述
我们的程序都是完好的,但是这时候需要增加一项日志的功能,记录Service层中每个类中方法的调用情况。
想想还是比较简单,只需要在该层中的每个方法中添加一句调用日志的代码即可,但是大量重复的操作,而且也更改了原来的代码,这不是又犯了大忌。。
在这里插入图片描述

我们再来看看AOP的实现思想:
在这里插入图片描述
AOP的实现,就是在不影响原来代码的基础上,增强之前的代码功能,想添加在哪里就添加到哪里,还能不影响之前的代码。

就好像是我们找到程序的一个指定位置,并在此处划一个“口子”,然后将我们需要增强的代码放进去一样。

以上内容就是博主自己对于IOC和AOP的一些见解,可能有些不足,也可能直接有问题,欢迎各路大佬前来指导。[\抱拳] [\抱拳]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章