AOP使用总结

一、执行顺序:

正常顺序:@Around->@Before->具体的方法->@Around->@After->@AfterReturning

在这里插入图片描述

方法出现异常:@Around->@Before->具体的方法->@After->@AfterThrowing

在这里插入图片描述

二、有多个切面

1、执行顺序:后一个切面在前一个切面的“具体的方法“处执行,“具体的方法”放到后一个切面类:AspectA around > AspectA before > AspectB around > AspectB brfore > “具体的方法” > AspectB around > AspectB after > AspectB afterReturning > AspectA around > AspectA after > AspectA afterRerurning
在这里插入图片描述

方法出现异常:执行顺序和上面类似
在这里插入图片描述

多个切面的执行顺序

1、执行顺序没有指定,使用多个切面的时候执行顺序自然也是未知的,所以使用@Order(value = 10)指定顺序,value小的先执行。
2、使用JRebel进行程序之后加@Order没用!!!

三、并发下的AOP

1、场景:使用AOP实现方法耗时的计算。

2、方法:在@Aound 里面proceed()执行之前记录开始时间,@After记录结束时间,进而算出消耗的时间。

3、问题:在并发的情况下,保证记录的开始时间不会被另一个请求覆盖。

4、解决: 把开始时间绑定到线程上,即使用ThreadLocal

其他:测试并发的工具Apacha JMeter

关于ThreadLocal类
在这里插入图片描述
在这里插入图片描述

使用:

在这里插入图片描述

在这里插入图片描述

结果:

35是使用普通的全局变量存储的
31>32…是使用ThreadLocal存储的值
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值