千鋒python培訓(xùn)seo專業(yè)培訓(xùn)需要多久
1.直接new出來的對象添加事務(wù)不起作用,因為只有spring定義的bean才接受事務(wù)。
2.由于mysql的引擎用Myisam不支持事務(wù),所以如果使用mysql的myisam引擎的話,事務(wù)不起作用。
3.如果@Transaction注解到非public方法上,事務(wù)不起作用,這是因為spring的Aop特性。
4.如果在當(dāng)前類中進(jìn)行內(nèi)部調(diào)用方法,比如在A類中有a方法和b方法,a方法沒有加@Transaction,b方法加了@Transaction,在方法a中調(diào)用方法b,方法b中的事務(wù)也不會生效。這是因為spring在掃描bean的時候會自動為標(biāo)注了@Transaction注解類生成一個代理類,在有注解方法被調(diào)用時,實際上是代理類調(diào)用的,代理類在調(diào)用之前會開啟事務(wù),執(zhí)行事務(wù)操作。但是同類中的方法相互調(diào)用,相當(dāng)于this.b(),此時的b方法并非代理類調(diào)用,而是直接通過原有的bean直接調(diào)用,所以注解不起作用。
5.異常類型錯誤,如果拋出的runtimeException事務(wù)才會回滾。
6.如果異常被catch到,必須要拋出異常,事務(wù)才會回滾。
7.你的service類沒有被spring管理,沒有在spring配置文件中啟用事務(wù)管理器。
8.事務(wù)方法被static、final關(guān)鍵字修飾,該事務(wù)失效。
9.事務(wù)超時時間設(shè)置過短。
10.使用了錯誤的事務(wù)傳播機制。
11.rollbackFor屬性配置錯誤。
12.事務(wù)多線程調(diào)用