Spring事務的實現原理主要是基于AOP(面向切面編程)
事務的開啟與提交/回滾
- 開啟事務:當Spring容器中的AOP代理檢測到一個匹配的切點方法被調用時,它會首先開啟一個新的事務或者加入到現有的事務中(這取決于事務傳播行為)。
- 提交/回滾事務:如果方法正常執行結束,則Spring會提交事務;如果方法執行過程中拋出了未檢查異常(繼承自
RuntimeException
的異常)或者已檢查異常并且被@Transactional
注解標記為應該回滾(通過rollbackFor
屬性指定),則Spring會自動回滾事務。如果沒有異常或者拋出的異常不在回滾規則內,則事務會被提交。