工作中Springboot@Transaction事务注解失效问题

工作中Springboot@Transaction事务注解失效问题

问题

在分享我工作中遇到的事务问题之前,先简单给大家分享一下Springboot事务失效的几种常见原因

1、检查数据库的引擎是否是innoDB

2、启动类上是否加入@EnableTransactionManagement注解(这个并不是必须的,springboot默认开启)

3、是否在方法上加入@Transactional注解或Service的类上是否有@Transactional注解

4、方法是否为public修饰的

5、是否是因为抛出了Exception等Checked检查异常,默认情况下,spring会对unchecked异常进行事务回滚;如果是checked异常则不回滚。如果想回滚Excepton异常可以在注解上添加@Transactional(rollbackFor = Exception.class)这样添加就可以了

6、在一个类中的方法调用时,被调用的方法如果有事务管理,那么事务管理会失效。

7、是否添加了@Async异步注解

8、事务方法的类是否被代理,可用AopUtils.isAopProxy()查看

我的错误是在Spirngboot中整合shiro的时候在Realm自动装配了Service层导致事务的Service没有被代理,所以引起了事务失效。

解决方法

在Realm中自动装配的Service加上 @Lazy便可以解决了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值