在讲事务的7种传播行为前可以分享一个个人亲身的小经历,我大三拿到学位证以及成绩合格后和学校申请大四离校外出实习;有屎以来第一次面试就是一家大厂,当时初生牛犊不怕虎,也是不知天高地厚,面试官因为某种原因来的是架构师和项目经理,他们的第一问题就是问我事务的传播行为以及事务的隔离级别,很可惜那家大厂我很向往,但与我无缘;搞技术这行,菜就是原罪,我菜的真实,所以每次谈到事务就让我有所回忆,所以请你打死也要记住这玩意,不要管别人说什么工作中用处大不大,别只局限于眼前的苟且。
进入正题:
一、对传播的初步认识
事务的传播行为,既然是传播行为,那么就要进行传播这个动作,传播就是至少需要两个的,单个个体是不存在传播的。
例如:
ServiceA { void methodA() {ServiceB.methodB();}
}
methodA事务方法调用methodB事务方法时,methodB是继续在调用者methodA的事务中运行呢,还是为自己开启一个新事务运行,这就是由methodB的事务传播行为决定的
二、7种传播行为
-1、PROPAGATION_REQUIRED:支持当前事务,假设当前没有事务。就新建一个事务。-2、PROPAGATION_SUPPORTS:支持当前事务,假设当前没有事务,就以非事务方式运行。-3、PROPAGATION_MANDATORY:支持当前事务,假设当前没有事务,就抛出异常。-4、PROP