回覆列表
  • 1 # 冬天裡的碼農

    1. 直接new出來的物件新增事務不起作用,因為只有spring定義的bean才接受事務。

    2.由於mysql的引擎用Myisam不支援事務,所以如果使用mysql的myisam引擎的話,事務不起作用。

    3.如果@Transaction註解到非public方法上,事務不起作用,這是因為spring的Aop特性。 4.如果在當前類中進行內部呼叫方法,比如在A類中有a方法和b方法,a方法沒有加@Transaction,b方法加了@Transaction,在方法a中呼叫方法b,方法b中的事務也不會生效。這是因為spring在掃描bean的時候會自動為標註了@Transaction註解類生成一個代理類,在有註解方法被呼叫時,實際上是代理類呼叫的,代理類在呼叫之前會開啟事務,執行事務操作。但是同類中的方法相互呼叫,相當於this.b(),此時的b方法並非代理類呼叫,而是直接透過原有的bean直接呼叫,所以註解不起作用。

    5.異常型別錯誤,如果丟擲的runtimeException事務才會回滾。

    6.如果異常被catch到,必須要丟擲異常,事務才會回滾。

  • 中秋節和大豐收的關聯?
  • 孩子作業特別差怎麼辦?