Springboot入门——初学者对AOP代码层实现原理的理解与@AspectJ的实际应用

本文介绍了AOP的基本概念和原理,通过代码解释了AOP如何利用代理对象实现。在Springboot中,@AspectJ注解用于应用AOP,可以自定义切面执行顺序。此外,还探讨了AOP在增强第三方接口功能方面的应用。
摘要由CSDN通过智能技术生成

原理(概念)

AOP,面向切面编程,它是一种约定流程的编程方式。
什么是切面呢?
我们把在业务逻辑中一个对象的方法想象成就是一个切面,切面编程就是在这个方法的前前后后进行一些列的相关操作,比如在方法执行之前设置一个函数编写我们自定义的程序代码,或者在方法执行之后,或者在方法抛错后等等。
初学者此时可能会提出问题,既然是在方法的前后编写自定义的程序,那直接写在方法前面或者后面不就可以了么?可以,但是!这样做大大增加了代码的耦合度。我们的目的,是在方法执行之时,以这个方法执行为触发点,自动的调用我们自定义的前前后后的方法。从而实现解耦。
举个例子,我们在向数据库插入数据时,每次的执行是这样的:连接数据库>调用方法执行sql语句>关闭连接。每次都要重复的去执行连接数据库和关闭连接,这样太繁琐。这个时候,如果对"调用方法执行sql语句"这一步进行切面编程,让每次这个方法执行时,在其执行前执行一个我们自定义的方法(连接数据库),在其执行后执行一个我们自定义的方法(关闭连接),这样问题就解决了。

原理(代码)

aop是怎样实现的呢?想像一下糖葫芦。假设我们串糖葫芦时,竹签串的是没有糖衣的纯净版山楂,这时候就相当于我们系统执行了一个对象的某个方法。当我们把山楂淋上糖衣之后,糖衣相当于一个新的对象,我们再用竹签串山楂时,我们其实串的是糖衣,也就是说我们操作的是另一个对象的方法,而在糖衣当中我们又串了山楂。没错,我们就是这样在山楂这个对象方法的前前后后自定义了糖衣,我们操作的是包裹着的糖衣而不是纯净的山楂了,糖衣也就等于是山楂的代理对象了。aop就是这样利用代理对象实现的

HelloService helloService = new HelloServiceImpl();
HelloService proxy = (HellowService) ProxyBean.getProxyBean(helloService,new MyInterceptor());
proxy.sayHello();//这时执行方法时,就会有我们说的前前后后的自定义事件了。

那ProxyBean类是怎样的呢?

public class ProxyBean implements InvocationHandler
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

缔曦_deacy

码字不易,请多支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值