Spring在TransactionDefinition接口中7種類型的事務(wù)傳播行為,它們規(guī)定了事務(wù)方法和事務(wù)方法發(fā)生嵌套調(diào)用時(shí)事務(wù)如何進(jìn)行傳播:
1.PROPAGATION_REQUIRED
如果當(dāng)前沒有事務(wù),就新建一個事務(wù),如果已經(jīng)存在一個事務(wù)中,加入到這個事務(wù)中。這是最常見的選擇。
2.PROPAGATION_SUPPORTS
支持當(dāng)前事務(wù),如果當(dāng)前沒有事務(wù),就以非事務(wù)方式執(zhí)行。
3.PROPAGATION_MANDATORY
使用當(dāng)前的事務(wù),如果當(dāng)前沒有事務(wù),就拋出異常。
4.PROPAGATION_REQUIRES_NEW
新建事務(wù),如果當(dāng)前存在事務(wù),把當(dāng)前事務(wù)掛起。
5.PROPAGATION_NOT_SUPPORTED
以非事務(wù)方式執(zhí)行操作,如果當(dāng)前存在事務(wù),就把當(dāng)前事務(wù)掛起。
6.PROPAGATION_NEVER
以非事務(wù)方式執(zhí)行,如果當(dāng)前存在事務(wù),則拋出異常。
7.PROPAGATION_NESTED
如果當(dāng)前存在事務(wù),則在嵌套事務(wù)內(nèi)執(zhí)行。如果當(dāng)前沒有事務(wù),則執(zhí)行與PROPAGATION_REQUIRED類似的操作。