Spring AOP嵌套调用,同一类的方法调用切面切不到,@Transactional同一个类不生效问题(含解决办法)

@Transactional实际是通过Spring AOP来实现事务的管理的!
Spring AOP,大家都知道,就是切面,通过切面,来丰富我们的方法,但有时候我们会发现我们的切面失效了,不起作用,这是为什么呢?
现在单讲其中的一种情况,一个类有A,B两个方法,其中B是加了切面的,当在方法A中,直接调用B方法,是不会触发B方法的切面的。
在这里插入图片描述

原因:
正常情况下,我们调用一个类含切面的方法,实际我们是从Spring Bean容器中获取这个类的代理对象,这个代理对象里就包含了这个切面的信息。但是如果我们是同一个类里面,向上图那样的调用,就跳过了从spring容器中获取代理对象的过程,直接调用的是当前实例对象的方法,就自然没有增强的切面信息,即这个切面失效了。

如何解决切面失效问题:
1、将这个具有切面的方法,放到另一个类里面。这样就能触发从Spring Bean获取代理类的操作。
2、获取本对象的代理对象,再进行调用。具体操作如:
在这里插入图片描述
好啦,这就是用一个类中调用切面方法失效的原因,和解决办法啦。看完记得点个赞噢!

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值