哪些網(wǎng)站是react做的企業(yè)培訓(xùn)師資格證報考2022
目錄
1. 事務(wù)方法不是public
2. 自調(diào)用問題
3. 異常處理不當(dāng)
4. 數(shù)據(jù)源或事務(wù)管理器配置錯誤
5. 事務(wù)傳播行為不當(dāng)
6. 代理方式不正確
7. 事務(wù)同步問題
1. 事務(wù)方法不是public
? ?在Spring中,默認(rèn)情況下,只有public方法上的@Transactional
注解才會被代理對象識別并應(yīng)用事務(wù)。如果在非public方法上使用@Transactional
,事務(wù)可能不會被正確處理。
2. 自調(diào)用問題
? ?當(dāng)一個對象內(nèi)部的一個事務(wù)方法被該對象內(nèi)的另一個方法調(diào)用時,事務(wù)不會起作用。這是因為事務(wù)的應(yīng)用是通過代理實現(xiàn)的,而自調(diào)用并不通過代理。
3. 異常處理不當(dāng)
? ?Spring事務(wù)默認(rèn)只對運(yùn)行時異常(RuntimeException
及其子類)和錯誤(Error
)進(jìn)行回滾,如果方法中拋出的是檢查型異常(Exception
的其他子類),且沒有在@Transactional
注解的rollbackFor
屬性中指定對這些異常進(jìn)行回滾,則事務(wù)不會回滾。
4. 數(shù)據(jù)源或事務(wù)管理器配置錯誤
? ? 如果數(shù)據(jù)源或事務(wù)管理器沒有正確配置,或者方法使用的數(shù)據(jù)源沒有事務(wù)管理的能力,比如使用了簡單的JDBC數(shù)據(jù)源而不是支持事務(wù)的數(shù)據(jù)源,那么事務(wù)將不會工作。
5. 事務(wù)傳播行為不當(dāng)
? ? Spring提供了多種事務(wù)傳播行為Spring 事務(wù)傳播行為,如果選擇的傳播行為不適合當(dāng)前的業(yè)務(wù)場景,可能會導(dǎo)致事務(wù)失效。例如,將方法標(biāo)記為PROPAGATION_SUPPORTS
,但該方法實際上是非事務(wù)性執(zhí)行的。
6. 代理方式不正確
? ? 如果Spring的配置中使用了基于接口的JDK代理而方法實現(xiàn)在類中而不是接口,或者需要使用基于類的代理(CGLIB)卻沒有正確配置,事務(wù)可能不會被應(yīng)用。
7. 事務(wù)同步問題
? ?如果在事務(wù)方法中進(jìn)行了線程切換,比如使用了@Async
注解進(jìn)行異步調(diào)用,事務(wù)上下文可能不會傳播到新線程中,導(dǎo)致事務(wù)失效。