JavaWeb开发05-事务管理-AOP概述-AOP通知类型-通知顺序-切入点表达式-连接点-案例

一、事务管理

1.事务回顾

2.Spring事务管理

删除部门和删除部门下的员工应该绑定在一起,但是如果这两个操作之间出现错误,就会执行删除部门不删除员工,所以需要使用事务将两个任务绑定在一起,要么一起成功要么一起失败

Spring中如何使用事务:

注解可以加在方法、类、接口上,但是在项目中经常加在多次数据访问增删改的方法上

3.事务进阶

①rollbackFor

这样配置rollbackFor就可以所有异常都回滚

②propagation

在解散部门方法是使用事务,在解散部门方法中要有个方法记录操作日志,也是使用了事务,但是这个方法无论解散部门方法是否执行成功都要执行。

如果是REQUIRED就会加入之前方法的事务中,但是如果之前的事务出现错误回滚了,后面的方法也会回滚,就算放在try-finally中也会回滚

设置为REQUIRES_NEW会给后面的方法设置新的事物。

二、AOP-基础

1.AOP概述

就是要对特定方法执行相同的操作,进行模板程序,基于动态代理

2.AOP快速入门

编辑AOP程序

编写AOP程序要交给IOC容器进行管理,加上@Aspect注解就是AOP程序
在@Around中就是代表哪些方法需要进行编程

3.AOP核心概念

AOP执行流程:

在程序运行的时候会自动为目标对象创建一个代理对象,在这个对象中就会对目标对象中的方法进行增强,就会将AOP程序中绿色部分和目标对象的红色方法原始程序结合在一起,在程序运行的时候就不注入目标对象注入的是代理对象,运用的方法是代理对象的方法。

三、AOP-进阶

1.通知类型

如果切入点表达式很多都一样,有不同类型的通知类型的方法,可以对切入点表达式进行抽取

使用@Pointcut注解

只要把这个方法设置成public就可以在其他类中的AOP程序中引用这个切点表达式

2.通知顺序

可以通过加注解来改变顺序

3.切入点表达式

①execution表达式

包名类名不建议省略

execution通配符:

第一个*代表任意返回值,第二个*代表第二级任意包,第三个*代表该包下任意接口或类,第四个*代表任意方法中方法名中以update开头的方法,第五个*代表任意类型的有且仅有的一个参数。

第一个..代表任意层级的包,第二个..代表任意个数的参数

②annotation表达式

创建一个自己的注解,加在所需要的切入点上

4.连接点

在Around通知中就需要ProceedingJoinPoint

对于其他四种通知只能使用JoinPoint

四、AOP案例

通过AOP方法中传入的ProceedingJoinPoint对象就可以获取连接点的信息,通过注入的HttpServletRequest对象获取JWT令牌中的信息,知道当前操作对象,并封装到operatorLog对象中。然后调用mapper层中insert向日志表中添加数据。

切面类:

  • 16
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

秦果

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值