spring聲明性事務(wù)常見(jiàn)問(wèn)題分析(續(xù))
上一篇說(shuō)明了一種spring事務(wù)配置方式,這次補(bǔ)上另一種。見(jiàn)配置文件:



















重點(diǎn)說(shuō)明兩點(diǎn):
1.<aop:pointcut id="projectServiceOperation" expression="execution(* cn.ceopen.bss..*.service..*(..))" />
表示你要進(jìn)行事務(wù)控制的類名。詳細(xì)資料可以查下 aspectj語(yǔ)法。
配置完成一定要實(shí)際測(cè)試一下,我配置過(guò) expression="execution(* cn.ceopen.bss..*.service.*(..))" 少了一個(gè)點(diǎn),導(dǎo)致事務(wù)不起作用。
導(dǎo)致項(xiàng)目很長(zhǎng)一段時(shí)間事務(wù)方面沒(méi)經(jīng)過(guò)嚴(yán)格測(cè)試。
2.
Spring的AOP事務(wù)管理默認(rèn)是針對(duì)unchecked exception回滾。
也就是默認(rèn)對(duì)RuntimeException()異常極其子類進(jìn)行事務(wù)回滾。
在項(xiàng)目中定義公共的RuntimeException異常,避免每個(gè)開(kāi)發(fā)人員隨意拋出異常。
不然的話沒(méi)新定義一個(gè)異常,就要修改tx:method rollback-for 太麻煩了。
總結(jié):
1.對(duì)事務(wù)配置進(jìn)行檢查,對(duì)復(fù)雜嵌套的事務(wù)邏輯必要的時(shí)候debug到spring源碼中確認(rèn)。
2.定義統(tǒng)一異常類型
3.同一個(gè)類調(diào)用自身方法,子方法的事務(wù)配置不起作用。解決方法見(jiàn)上一篇文章。
http://www.aygfsteel.com/zyskm/archive/2011/11/11/363535.html
作者: zyskm
本文地址:
http://www.aygfsteel.com/zyskm/archive/2011/11/30/365225.html
posted on 2011-11-30 17:35 zyskm 閱讀(3280) 評(píng)論(0) 編輯 收藏