Spring事務不生效問題匯總

轉(zhuǎn)自:http://blog.csdn.net/zhu_tianwei/article/details/72848654

在實際項目開發(fā)中函喉,經(jīng)常會由于配置錯誤或使用不當,導致spring事務管理不生效浸卦。如下總結了幾點事務不生效的情況:

1裸违、確認創(chuàng)建的mysql數(shù)據(jù)庫表引擎是InnoDB目锭,MyISAM不支持事務荧呐。

2、確認調(diào)用的類是由spring容器管理的代理類擅憔。

AopUtils.isAopProxy(Object object)
AopUtils.isCglibProxy(Object object) //cglib
AopUtils.isJdkDynamicProxy(Object object) //jdk動態(tài)代理
<aop:config proxy-target-class="true" />可強制cglib代理

3鸵闪、調(diào)用的方法必須是public,否則事務不起作用暑诸。這一點由Spring的AOP特性決定的蚌讼。

4、spring切點是否配置錯誤个榕,或使用了springmvc篡石,可能是context:component-scan重復掃描引起的。

5西采、拋出一個runtimeException才能回滾凰萨。
Spring使用聲明式事務處理,默認情況下械馆,如果被注解的數(shù)據(jù)庫操作方法中發(fā)生了unchecked異常胖眷,所有的數(shù)據(jù)庫操作將rollback;如果發(fā)生的異常是checked異常狱杰,默認情況下數(shù)據(jù)庫操作還是會提交的瘦材。
Java異常之checked與unchecked:http://www.cnblogs.com/shihuc/p/5201905.html
Exception這個父類是checked類型,但是其子類RuntimeException (子類NullPointerException等)是unchecked的仿畸。

checked與unchecked在throwable中的繼承關系

6食棕、Spring的事務傳播策略在內(nèi)部方法調(diào)用時將不起作用。

public int save(String name, int age) throws Exception {
        insert(name, age);
        return 1;
    }
    @Transactional
    public void insert(String name, int age){
        jdbcTemplate.update("insert into user(id,name,age)values(1,'"+name+"',"+age+")");
        jdbcTemplate.update("insert into user(id,name,age)values(2,'"+name+"',"+age+")");
        jdbcTemplate.update("insert into user(id,name,age)values(1,'"+name+"',"+age+")");
    }

Spring事務的傳播機制:
Propagation支持7種不同的傳播機制:
REQUIRED:如果存在一個事務错沽,則支持當前事務簿晓。如果沒有事務則開啟一個新的事務。
SUPPORTS: 如果存在一個事務千埃,支持當前事務憔儿。如果沒有事務,則非事務的執(zhí)行放可。但是對于事務同步的事務管理器谒臼,PROPAGATION_SUPPORTS與不使用事務有少許不同。
NOT_SUPPORTED:總是非事務地執(zhí)行耀里,并掛起任何存在的事務蜈缤。
REQUIRESNEW:總是開啟一個新的事務。如果一個事務已經(jīng)存在冯挎,則將這個存在的事務掛起底哥。
MANDATORY:如果已經(jīng)存在一個事務,支持當前事務。如果沒有一個活動的事務趾徽,則拋出異常续滋。
NEVER:總是非事務地執(zhí)行,如果存在一個活動事務孵奶,則拋出異常
NESTED:如果一個活動的事務存在疲酌,則運行在一個嵌套的事務中。如果沒有活動事務拒课,則按REQUIRED屬性執(zhí)行徐勃。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市早像,隨后出現(xiàn)的幾起案子僻肖,更是在濱河造成了極大的恐慌,老刑警劉巖卢鹦,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件臀脏,死亡現(xiàn)場離奇詭異,居然都是意外死亡冀自,警方通過查閱死者的電腦和手機揉稚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來熬粗,“玉大人搀玖,你說我怎么就攤上這事∽つ牛” “怎么了灌诅?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長含末。 經(jīng)常有香客問我猜拾,道長,這世上最難降的妖魔是什么佣盒? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任挎袜,我火速辦了婚禮,結果婚禮上肥惭,老公的妹妹穿的比我還像新娘盯仪。我一直安慰自己,他們只是感情好蜜葱,可當我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布磨总。 她就那樣靜靜地躺著,像睡著了一般笼沥。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天奔浅,我揣著相機與錄音馆纳,去河邊找鬼。 笑死汹桦,一個胖子當著我的面吹牛鲁驶,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播舞骆,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼钥弯,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了督禽?” 一聲冷哼從身側(cè)響起脆霎,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎狈惫,沒想到半個月后睛蛛,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡胧谈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年忆肾,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片菱肖。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡客冈,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出稳强,到底是詐尸還是另有隱情场仲,我是刑警寧澤,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布键袱,位于F島的核電站燎窘,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏蹄咖。R本人自食惡果不足惜褐健,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望澜汤。 院中可真熱鬧蚜迅,春花似錦、人聲如沸俊抵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽徽诲。三九已至刹帕,卻和暖如春吵血,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背偷溺。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工蹋辅, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人挫掏。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓侦另,卻偏偏與公主長得像,于是被迫代替她去往敵國和親尉共。 傳聞我的和親對象是個殘疾皇子褒傅,可洞房花燭夜當晚...
    茶點故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 事務的嵌套概念 所謂事務的嵌套就是兩個事務方法之間相互調(diào)用。spring事務開啟 袄友,或者是基于接口的或者是基于類的...
    jackcooper閱讀 1,414評論 0 10
  • 概述事務管理對于企業(yè)應用來說是至關重要的殿托,即使出現(xiàn)異常情況,它也可以保證數(shù)據(jù)的一致性杠河。Spring Framewo...
    沉默羔羊121閱讀 1,129評論 0 0
  • 1 事務 1.1 事務管理方式 spring支持編程式事務管理和聲明式事務管理兩種方式碌尔。 編程式事務管理使用Tra...
    鑫奕航閱讀 2,786評論 0 1
  • spring,mybatis事務管理配置與@Transactional注解使用 概述 事務管理對于企業(yè)應用來說是至...
    tenlee閱讀 4,136評論 0 11
  • 事務的嵌套概念 所謂事務的嵌套就是兩個事務方法之間相互調(diào)用店印。spring事務開啟 旷余,或者是基于接口的或者是基于類的...
    pigstomachs閱讀 1,015評論 0 1