SpringAOP实现底层原理及详细介绍代码实现

SpringAOP原理介绍

在学习了SpringIOC之后,我们可以使用IOC的知识讲代码中层与层之间的耦合性进行解耦,便于后期维护,但是在实际生产环境,我们发现随着公司的业务增长,我们会升级某个业务层的业务方法的代码逻辑,升级后的业务方法还需要兼容以前的逻辑处理代码,也就是说再保留原有功能逻辑的基础上,在方法中新增新的逻辑代码,而这个时候,就需要我们去修改当前功能发放的源码,增加新的逻辑代码,然后重新运行项目,这时候会出现下面两个问题:
① 假如我们有当前功能方法的源码,就需要阅读当前方法的源码,然后在增加增加的新的逻辑代码,并且修改好后,需要将新的类文件去替换旧的类文件,而且阅读代码本身的效率就非常低。
② 假如我们没有源码文件,那么就无法直接修改源码增加新的功能逻辑。

用SpringAOP方法就能解决(SpringAOP只是个人感觉相对性好用的一种方法)
在不修改原有功能逻辑的基础上完成扩展功能
我们举个例子说明一下吧:
A对象中有一个testA的方法,A–>testA(),现在需要升级testA方法,创建一个B对象,在B对象中声明一个testB方法,然后在testB中调用testA方法,并且在testB中声明扩展代码。然后将代码中调用A对象的testA方法的代码替换为调用B对象的testB方法,完成了升级,为了方便代码的替换可以让A和B都实现借口C,将要进行功能扩展的方法在C中声明,这样就只需要将A对象替换为B对象,就不需要修改调用方法了,但是将A替换为B对象,如果有1000个代码都在调用A对象,就需要替换1000次,而且替换的时候还会容易遗漏,这种情况建议使用一下IOC,

SpringAOP底层原理图

在这里插入图片描述

SpringAOP概念

	真实对象:要进行功能扩展的对象,相当于A对象
	代理对象:完成功能扩展的对象,相当于B对象。
	切点: 要进行功能扩展的方法,相当于testA()方法。
	前置通知方法:在切点之前执行的扩展方法。
	后置通知方法:在切点之后执行的扩展方法。
	切面:由前置+切点+后置通知形成的横向执行的面。
	织入:由前置通知+后置通知形成切面的过程。
	AOP的概念:面向切面的编程

在源码上直接修改添加新功能(代码实现)

controller层
在这里插入图片描述
service层
接口
在这里插入图片描述
实现接口
在这里插入图片描述
applicationcontext.xml文件配置
在这里插入图片描述
运行结果在这里插入图片描述

SpringAOP模式不修改源码添加新功能(源码)

controller层

在这里插入图片描述
service层
接口
在这里插入图片描述
接口实现在这里插入图片描述
avdvice层
在这里插入图片描述
在这里插入图片描述
applicationcontext.xml文件配置
在这里插入图片描述

运行结果

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值