在spring中可通過使用注解@Transcation( propagation = "傳播機制")實現事務的傳播,Spring中有7種傳播機制
1.默認傳播:PROPAGATION_REQUIRED
- 支持當前的事務,如果當前沒有事務,就新建事務;
- 如果當前已有事務,則合並為一個事務。
解釋:如果有個父方法A和子方法B,只要有一個帶有事務,那么A和B都將擁有事務。
2.獨立事務:REQUIRES_NEW
- 如果當前已擁有事務,則把當前事務掛起,新建事務
- 該機制下的事務不受其它調用者事務的影響
解釋:如果有個父方法A(有事務)和子方法B(有事務),如果A拋出異常,而B使用了這個聲明事務,那么B仍會繼續提交(不受A事務影響)
3.NESTED
- 如果當前存在事務,它將會成為父級的一個子事務,方法結束后並沒有提交,只是等待父事務結束才提交。
- 如果當前沒有事務,則新建事務。
- 如果它本身異常,父級可以捕獲到它的異常,而不進行回滾。正常提交。
- 但是如果父級異常,它必然回滾。
解釋:一切以父級事務為主
4.SUPPORTS
- 若當前已有事務,則加入事務;
- 若當前沒有事務,則以無事務進行;
解釋:佛系事務,有就用,沒有就不用了
5.NOT_SUPPORTS
不支持事務,如果當前有事務,則把該事物掛起
6.MAMDATORY
- 若當前有事務,則運行當前事務;
- 若當前沒有實物,則拋異常;
解釋:父級若沒有事務,就不干了
7.NEVER
有事務就拋異常