在Spring中,事務傳播屬性定義了一個方法的事務邊界如何與其他方法的事務邊界相互關聯。Spring提供了以下的事務傳播屬性:
REQUIRED:如果當前存在事務,則加入該事務,如果不存在事務,則創建一個新的事務。這是最常用的傳播屬性。
SUPPORTS:如果當前存在事務,則加入該事務,如果不存在事務,則以非事務的方式運行。
MANDATORY:如果當前存在事務,則加入該事務,如果不存在事務,則拋出異常。
REQUIRES_NEW:無論當前是否存在事務,都創建一個新的事務。如果當前存在事務,則將當前事務掛起。
NOT_SUPPORTED:以非事務的方式運行,如果當前存在事務,則將當前事務掛起。
NEVER:以非事務的方式運行,如果當前存在事務,則拋出異常。
NESTED:如果當前存在事務,則在當前事務的嵌套事務中運行。如果不存在事務,則創建一個新的事務。嵌套事務可以獨立于外部事務進行提交或回滾。
這些事務傳播屬性可以通過在@Transactional注解中指定來應用于方法。例如,@Transactional(propagation = Propagation.REQUIRED)。