javaweb笔记。13 事务管理&AOP

13.1 事务管理

13.1.1 事务回顾

13.1.2 Spring事务管理

在删除员工前放置异常,这样sql里3号部门被删除,但3号部门的员工却未被删除。

 

 

 

 13.1.3 事务进阶

 未进行正常回滚

13.1.3.1 rollbackfor

 

 13.1.3.2 propagation

 只需要关注前两个就好

加一个

REQUIRES_NEW

设置为REQUEST_NEW代表需要一个新的事务,无论当前是否有事务,都会创建一个新的事务,无论delete是否有异常,都不影响被调用的insert事务的正常提交

13.2 AOP基础

13.2.1 AOP概述

@Aspect:声明当前类为AOP类

@Around:针对特定方法进行编程。

com.itheima.service:包名

第一个*:类或接口

第二个*:方法名。

com.itheima.service.*.*:对包里所有的类或接口编程

画横线的地方表示拿到方法的签名

没修改任何原始业务方法,就已经往里添加了统计耗时功能

13.3 AOP核心概念

切入点PointCut是个注解,后面加匹配连接点的条件(execution:切入点表达式)

AOP执行流程

左上角是我们要定义的AOP类,里面确定了我们需要增强的类

右上角为AOP要增强的目标对象的类

右下角为增强后的代理对象类

 左下角程序片段里的private DeptService deptService实际上新建的是右下角代理对象,调用的list方法实际上是调用的代理对象的list方法。

右下角代理程序里实际上测量的是deptMapper.list()执行的时间

13.4 AOP进阶

13.4.1 通知类型

 

 

 

 

 切面类就是AOP类

13.4.2 通知顺序

 切面类(就是AOP包里的类)的执行顺序。

一般用第二种,@Order控制切面类里通知方法的执行顺序

 13.4.3 切入点表达式

例:

基于类描述

为DeptServiceImpl类里的delete加前置通知

编写切面类

@Slf4j:提供日志保存功能

@Component:把该类交给ioc容器管理

@Autowired//为下面的DeptService 接口提供bean对象

private DeptService deptService 

点击绿色按钮,运行该单元测试

基于接口描述

依然可以匹配到DeptServiceImpl类里的delete方法

第一个*代表返回值类型

com

*:二级包任意

service.DeptService里所有的方法

 该切入点表达式的意思是

com.service包下,以delete开头的方法,(*)表示该方法只有一个参数

 该切入点表达式里(..)意思是匹配任意数量参数的方法。

第一个:匹配com下所有的包里的所有方法

第二个:匹配当前环境下下所有的方法(慎用)

@Target表明生效的地方

在想要添加通知的扩展名上面添加@Mylog即可

13.4.4 连接点

13.5 AOP案例

记录方法执行时长,使用环绕通知@Around

建表语句

粘贴进查询控制台运行

把准备好的实体类OpeatorLog粘贴在pojo里

把mapper接口粘贴到mapper包下

自定义注解@Log

@Rentention(RententionPolicy.RUNTIME):定义该注解什么时候有效

@Target(ElementType.Runtime):定义作用范围(类或者方法上)METHOD

@Autowired:拿到这次请求的request对象

30行:拿到令牌

31行:解析令牌中的数据

Claims:map类型数据

getSignature():表示获取方法的签名

getName():表示获取签名的名字

把获取到的数据封装到实体类OperateLog的对象operateLog里

第一个参数id主键自增,不需要赋值

给方法加上@Log就会被球面类的切入点表达式匹配到

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值