spring--aop详细介绍及使用

aop

在这里插入图片描述

可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术,提高代码的灵活性和可扩展性
动态代理实现

主要用途
日志记录,事务处理

例如:转账看做一个事务,包含两个操作,一方通过sql实现账户钱数增加,另一方通过sql实现钱数减少,只要有一方失败,整个事务都失败
在这里插入图片描述
使用动态代理可以实现上面转账事务

动态代理

在这里插入图片描述
在这里插入图片描述

AOP的使用

切入点:要织入方法执行的时机
在这里插入图片描述如何实现在调用addUser()方法的时候,先调用beforeService方法
即怎么实现动态注入?使用配置文件
在这里插入图片描述
切入点:要织入的方法执行的时机
在这里插入图片描述通过配置文件设置切入点:
1.找到配置文件
在这里插入图片描述2.配置切入点
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述aop:before
before代表在调用织入点方法即adduser方法之前调用beforeService方法
after 代表之后
around 代表之前和之后都调用 ,调用两次
在这里插入图片描述
详解:要切入方法各部分配置
在这里插入图片描述

开发中aop的作用

主要用于事务的织入
为什么这么做?
为了降低程序员的负担
正常开发的话需要手动的创建连接,开启事务,实现增删改查,提交事务,关闭连接
对于程序员,核心代码是写业务逻辑,即sql语句增删改查,然后执行sql
常见连接,释放连接,开启事务,提交事务,都是重复性的,没有技术含量的
那么这些重复性的没有技术含量的就就交给框架来做,程序员只需要关注核心业务逻辑即可

事务一定放在service层上,而不是dao上
如果事务织入到dao层,其实没有意义的
例如:一个转账操作涉及dao层两个方法,即一个事务涉及到两个dao
因此事务不能放在dao上
(addMoney 加钱 minmoney减钱)
如果放在dao层,即addMoney方法和minMoney方法分别对应一个事务
如果一个执行成功,一个失败,相互间不会受到影响,但我们知道,转账时addmoney和minmoney都要么都成功,要么都失败,因此这两个方法应该对应一个事务,即事务放在service层上,而不是dao上

猜你喜欢

转载自blog.csdn.net/qq_41150890/article/details/108110264