當(dāng)事務(wù)方法被另一個事務(wù)方法調(diào)用時,必須指定事務(wù)應(yīng)該如何傳播
支持當(dāng)前事務(wù)的情況:
PROPAGATION_REQUIRED
????如果存在一個事務(wù),則支持當(dāng)前事務(wù)。如果沒有事務(wù)則開啟一個新的事務(wù)
PROPAGATION_SUPPORTS
????如果存在一個事務(wù),支持當(dāng)前事務(wù)。如果沒有事務(wù),則非事務(wù)的執(zhí)行。但是對于事務(wù)同步的事務(wù)管理器,PROPAGATION_SUPPORTS與不使用事務(wù)有少許不同
PROPAGATION_MANDATORY
? ??如果已經(jīng)存在一個事務(wù),支持當(dāng)前事務(wù)。如果沒有一個活動的事務(wù),則拋出異常。
不支持當(dāng)前事務(wù)的情況:
PROPAGATION_REQUIRES_NEW
? ??總是開啟一個新的事務(wù)。如果一個事務(wù)已經(jīng)存在,則將這個存在的事務(wù)掛起。
PROPAGATION_NOT_SUPPORTED
? ??總是非事務(wù)地執(zhí)行,并掛起任何存在的事務(wù)。
PROPAGATION_NEVER
? ??總是非事務(wù)地執(zhí)行,如果存在一個活動事務(wù),則拋出異常
其他情況:
PROPAGATION_NESTED
? ??如果一個活動的事務(wù)存在,則運行在一個嵌套的事務(wù)中. 如果沒有活動事務(wù), 則按TransactionDefinition.PROPAGATION_REQUIRED 屬性執(zhí)行