1.首先看下@Transactional源碼
2.事務(wù)隔離級(jí)別
3.事務(wù)傳播行為(藍(lán)點(diǎn)標(biāo)注為常用)
3.1 PROPAGATION_REQUIRED
? ? ? ? 1> 在外圍方法未開啟事務(wù)的情況下Propagation.REQUIRED修飾的內(nèi)部方法會(huì)新開啟自己的事務(wù),且開啟的事務(wù)相互獨(dú)立钦铁,互不干擾芋膘。
? ? ? ? 2>?在外圍方法開啟事務(wù)的情況下Propagation.REQUIRED修飾的內(nèi)部方法會(huì)加入到外圍方法的事務(wù)中,所有Propagation.REQUIRED修飾的內(nèi)部方法和外圍方法均屬于同一事務(wù),只要一個(gè)方法回滾,整個(gè)事務(wù)均回滾
3.2?PROPAGATION_REQUIRES_NEW
? ? ? ? 1>?在外圍方法未開啟事務(wù)的情況下Propagation.REQUIRES_NEW修飾的內(nèi)部方法會(huì)新開啟自己的事務(wù),且開啟的事務(wù)相互獨(dú)立鹃愤,互不干擾。
? ? ? ? 2>?在外圍方法開啟事務(wù)的情況下Propagation.REQUIRES_NEW修飾的內(nèi)部方法依然會(huì)單獨(dú)開啟獨(dú)立事務(wù)完域,且與外部方法事務(wù)也獨(dú)立软吐,內(nèi)部方法之間、內(nèi)部方法和外部方法事務(wù)均相互獨(dú)立吟税,互不干擾凹耙。
? ? ? ? ? ? 但是:內(nèi)部方法異常拋給外圍方法,外圍方法依然會(huì)回滾!
3.3?PROPAGATION_NESTED(單獨(dú)的保存點(diǎn))
????????1>?在外圍方法未開啟事務(wù)的情況下Propagation.NESTED和Propagation.REQUIRED作用相同,修飾的內(nèi)部方法都會(huì)新開啟自己的事務(wù)肠仪,且開啟的事務(wù)相互獨(dú)立使兔,互不干擾。
? ? ? ? 2>在外圍方法開啟事務(wù)的情況下Propagation.NESTED修飾的內(nèi)部方法屬于外部事務(wù)的子事務(wù)藤韵,外圍主事務(wù)回滾,子事務(wù)一定回滾熊经,而內(nèi)部子事務(wù)可以單獨(dú)回滾而不影響外圍主事務(wù)和其他子事務(wù)
????????但是:內(nèi)部方法異常拋給外圍方法,外圍方法依然會(huì)回滾!