spring的事務(wù)傳播屬性有哪些

小億
107
2023-09-12 20:46:35

在Spring中,事務(wù)傳播屬性定義了一個(gè)方法的事務(wù)邊界如何與其他方法的事務(wù)邊界相互關(guān)聯(lián)。Spring提供了以下的事務(wù)傳播屬性:

  1. REQUIRED:如果當(dāng)前存在事務(wù),則加入該事務(wù),如果不存在事務(wù),則創(chuàng)建一個(gè)新的事務(wù)。這是最常用的傳播屬性。

  2. SUPPORTS:如果當(dāng)前存在事務(wù),則加入該事務(wù),如果不存在事務(wù),則以非事務(wù)的方式運(yùn)行。

  3. MANDATORY:如果當(dāng)前存在事務(wù),則加入該事務(wù),如果不存在事務(wù),則拋出異常。

  4. REQUIRES_NEW:無(wú)論當(dāng)前是否存在事務(wù),都創(chuàng)建一個(gè)新的事務(wù)。如果當(dāng)前存在事務(wù),則將當(dāng)前事務(wù)掛起。

  5. NOT_SUPPORTED:以非事務(wù)的方式運(yùn)行,如果當(dāng)前存在事務(wù),則將當(dāng)前事務(wù)掛起。

  6. NEVER:以非事務(wù)的方式運(yùn)行,如果當(dāng)前存在事務(wù),則拋出異常。

  7. NESTED:如果當(dāng)前存在事務(wù),則在當(dāng)前事務(wù)的嵌套事務(wù)中運(yùn)行。如果不存在事務(wù),則創(chuàng)建一個(gè)新的事務(wù)。嵌套事務(wù)可以獨(dú)立于外部事務(wù)進(jìn)行提交或回滾。

這些事務(wù)傳播屬性可以通過在@Transactional注解中指定來應(yīng)用于方法。例如,@Transactional(propagation = Propagation.REQUIRED)。

0