Spring提供的事務使用起來很方便,一個@Transactional注解就搞定全部,但是如果不注意,也會踩坑
提到事務就應該想到至少以下幾點:
1、在事務方法中加鎖,可能會導致鎖失效
無論是JVM自帶的鎖,還是分布式鎖,都有可能出現沒鎖住的情況
原因是解鎖先于事務提交,一旦鎖釋放后其它執行緒就可以獲取到鎖了,由于事務還沒提交,所以新執行緒讀到的還是舊資料(跟前一個執行緒讀取到的資料是一樣的),這就相當于多個執行緒做了一模一樣的事情了,

正確的做法是:要么別加事務,要么把鎖加在事務方法外面

2、呼叫內部(同一個類中)方法的話,事務不會生效

3、事務方法被宣告成private或者final,導致事務不生效

4、宣告回滾的例外型別與拋出的例外不一致,或者例外被吞掉了,
(PS:默認捕獲到RuntimeException和Error型別的例外才會回滾)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/545692.html
標籤:Java
