Spring事务的一些注意事项@Transactional

3 篇文章 0 订阅
1 篇文章 0 订阅

在开发Springboot项目的时候,一般我们要处理事务的时候只需要在方法上加个注解@Transactional就搞定了,轻松+愉快有木有。

有时候我们写了一个比较长的方法,里面一部分功能需要事务,还有一部分不想让他进事务该怎么处理呢?

简单,把需要处理事处的那部分代码独立抽取出来加个@Transactional就搞定了哈。

不过需要注意的是,在同一个类里的时候,因为springboot的传播机制,事务会失效,所以在同一个类里的时候调用方法,使用AopContext来获取一下代理,再来调用方法就可以了。

TestClass bean = (TestClass)AopContext.currentProxy();
bean.methodName();
这样事务就生效了。

还有几点要注意的是:

1、要想事务生效的话方法必须是public的。

2、不要把异常捕捉处理掉,处理完了就会认为没问题,自然就不会触发事务了。

3、默认是只会在Error 或runtimeException时触发回滚,如果想在别的异常时触发自已设置一下如:

@Transactional(rollbackFor = Exception.class)

这样所有异常就都会回滚了。不过一般用默认就可以了,这个看情况自己处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值