
spring
文章平均质量分 91
shuair
这个作者很懒,什么都没留下…
展开
-
REQUIRED、REQUIRES_NEW、NESTED的区别
如果当前无事务,则REQUIRED、REQUIRES_NEW、NESTED三种事务传播类型无区别,效果都是创建一个新事务如果当前存在事务,REQUIRED表示加入当前事务。可以理解为整体(方法一和方法二)使用同一个事务标识,同时提交或回滚。即使方法一捕获了方法二的异常,但是方法二抛出了异常,整体事务被标记为回滚了,此时方法一虽然可以继续运行到结束,但最终也是事务回滚,并且会主动抛出异常。如果当前存在事务,REQUIRES_NEW表示挂起当前事务,创建一个新事务。原创 2024-10-24 23:54:53 · 1416 阅读 · 2 评论 -
Transaction rolled back because it has been marked as rollback-only异常产生的原因
在Spring事务传播行为中,如果当前存在事务,PROPAGATION_REQUIRED、PROPAGATION_SUPPORTS、PROPAGATION_MANDATORY这三种事务传播类型会加入到当前事务,加入到当前事务表示:与当前事务同时提交或回滚 如果内层方法抛出异常,整体事务就会被标记为回滚,但是如果此时外层方法捕获内层方法抛出的异常,外层方法又无其它异常,外层方法则会继续执行到结束。此时仍然会做回滚操作,并且会抛出异常:org.springframework.transac原创 2024-10-16 23:54:01 · 504 阅读 · 0 评论 -
Spring事务传播行为的七种类型
PROPAGATION_REQUIRED当前存在事务:加入当前事务;当前不存在事务:创建一个新事务。PROPAGATION_SUPPORTS当前存在事务:加入当前事务;当前不存在事务:以非事务方式执行。PROPAGATION_MANDATORY当前存在事务:加入当前事务;当前不存在事务:抛出异常。PROPAGATION_REQUIRES_NEW当前存在事务:挂起当前事务,创建一个新事务;当前不存在事务:创建一个新事务。PROPAGATION_NOT_SUPPO原创 2024-10-16 23:50:54 · 819 阅读 · 0 评论