1.在同一類方法間相互調用,如果調用方無事務控制,被調用方有事務控制,則被調用方也無事務
原因:外部經過spring容器調用service的方法事務才生效,service類內部方法間相互調用事務不生效,也就是傳說中的自調用失效問題。主要原因是 Spring數據庫事務的約定,其實現原理是AOP,而AOP的原理是動態代理,在自調用的過程中,是類自身的調用,而不是代理對象去調用,那么就不會產生AOP,這樣 Spring就不能把你的代碼織入到約定的流程中,於是就產生了現在看到的失敗場景。
2.默認事務傳遞性)事務控制A調用事務控制B,如果B拋異常,A處理異常,則整個事務會回滾,同時報錯Transaction rolled back because it has been arked as rollback-only