Spring事務(wù)注解:方法調(diào)用鏈中事務(wù)如何傳播?

Spring事務(wù)注解:方法調(diào)用鏈中事務(wù)如何傳播?

spring @Transactional注解及方法調(diào)用鏈?zhǔn)聞?wù)傳播

本文分析spring框架中@Transactional注解在方法調(diào)用鏈中的事務(wù)傳播行為。假設(shè)A方法使用了@Transactional注解,并在內(nèi)部調(diào)用了未加@Transactional注解的B方法,B方法的操作是否會(huì)參與A方法的事務(wù)?

答案取決于Spring的事務(wù)傳播機(jī)制。當(dāng)A方法啟動(dòng)事務(wù)后,由于其擁有@Transactional注解,會(huì)開啟一個(gè)事務(wù)。隨后調(diào)用B方法,盡管B方法未聲明事務(wù),但它默認(rèn)會(huì)在A方法的事務(wù)上下文中執(zhí)行。這意味著B方法的操作也包含在A方法的事務(wù)中。

如果B方法執(zhí)行成功,A和B方法的所有操作都會(huì)提交;若B方法發(fā)生異常,根據(jù)Spring默認(rèn)的回滾機(jī)制,整個(gè)事務(wù)(包括A和B方法的操作)都會(huì)回滾,保證數(shù)據(jù)一致性。

因此,B方法的操作受A方法事務(wù)影響,其結(jié)果參與A方法事務(wù)并受其回滾機(jī)制約束。 需要注意的是,這是基于Spring默認(rèn)的事務(wù)傳播機(jī)制。 為了更精細(xì)地控制事務(wù)行為,可以在@Transactional注解中指定傳播屬性。

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊12 分享