@Transactional失效问题

本文探讨了Spring框架中@Transactional注解在特定情况下不生效的原因,并提供了解决方案。问题出现在同一类内部方法互相调用时,事务管理未能正常工作。通过调整方法所在的类来解决该问题。

最近开发的时候,遇到一个 @Transactional注解失效的问题。
场景是:方法A和方法B都在同一个类里,方法A没有 @Transactional注解,方法B有 @Transactional注解,A方法调用B方法,结果事务一直没生效,debug日志说是事务没有被spring管理。后面研究好久发现了原因:这是由于Spring AOP代理的原因造成的,因为只有当 @Transactional 注解的方法在类以外被调用的时候,Spring 事务管理才生效。 解决办法就是避免同一类中自调用或者使用 AspectJ 取代 Spring AOP 代理。于是我新建了一个类,将方法B写在新类里,问题就解决了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值