Spring Aop的引入

介绍为什么要用到Aop,
在我们以前的开发中,加入一个转帐的功能,一共需要开启五个事务,这5个事务就会有与数据库使用jdbc技术(步骤1新建链接,2,链接数据库3.准备数据库执行语句,4,开始执行,5,返回结果6,结果处理,7,释放链接)

在这里插入图片描述

但是如果中间有出现异常的话,就会造成异常之前的事务处理成功,异常之后的事务执行失败,其根本原因是这个转账业务应该同一写到统一的线程中,由线程进行创建链接,全局维护这一个数据库链接,将5个事务统一到1个事务中来。

在这里插入图片描述
在这里插入图片描述
那现在的问题是代码及其冗余,可读性不强,另外方法上对事务处理的方法依赖特别强,另外就是xml中的依赖配置及其负载。应该需要想办法简化。
在这里插入图片描述

办法–动态代理

由于这些service都是有接口的,可以使用基于接口的动态代理(JDK动态代理技术),将事务的处理部分当成代理额外执行的部分增加到代理中去。

在这里插入图片描述

在这里插入图片描述
需要注意的是xml的bean的注入,这个service是在beanfactory类中的动态代理生成的,后面使用的时候具体再调用方法,所以该service是通过factory方法(beanfactory中的方法)生成bean(也就是注解版本中在该配置文件的该方法上加上@bean对应)。
在这里插入图片描述

留下的问题是刚才的基于
现在剩下的问题就是如何简化xml文件。

Spring AOP

joinPoint 连接点(被代理对象的所有方法)
pointCut 切入点(被增强的方法)
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

基于xml的aop

在这里插入图片描述

发布了74 篇原创文章 · 获赞 2 · 访问量 6448

猜你喜欢

转载自blog.csdn.net/weixin_42067668/article/details/105151588