Spring事務傳播行爲類型
A方法先調,B方法再調用
類型 | 說明 | A有事務 | A沒有事務 |
---|---|---|---|
PROPAGATION_REQUIRED | 如果當前沒有事務,就新建一個事務,如果已經存在一個事務中,加入到這個事務中。這是最常見的選擇。 | 使用A事務 | B事務新建 |
PROPAGATION_SUPPORTS | 支持當前事務,如果當前沒有事務,就以非事務方式執行。 | 使用A事務 | 非事務執行 |
PROPAGATION_MANDATORY | 使用當前的事務,如果當前沒有事務,就拋出異常。 | 使用A事務 | 拋出異常 |
PROPAGATION_REQUIRES_NEW | 新建事務,如果當前存在事務,把當前事務掛起。 | A事務掛起 | B事務新建 |
PROPAGATION_NOT_SUPPORTED | 以非事務方式執行操作,如果當前存在事務,就把當前事務掛起。 | A事務掛起 | 非事務執行 |
PROPAGATION_NEVER | 以非事務方式執行,如果當前存在事務,則拋出異常。 | A事務掛起 | 拋出異常 |
PROPAGATION_NESTED | 如果當前存在事務,則在嵌套事務內執行。如果當前沒有事務,則執行與PROPAGATION_REQUIRED類似的操作。 | B開啓新事務但提交回滾以A事務爲準 | B事務新建 |