[025]Spring事物傳播特性詳解

背景

Spring 默認的事務(wù)的傳播為PROPAGATION_REQUIRED即如果當前沒有事務(wù)苔严,就新建一個事務(wù)刀荒。
我們知道首懈,如果一個事物函數(shù)拋出異常會回滾看成,那么對于兩個獨立的事物如果里面函數(shù)拋出異常怎么辦华畏?
兩個兩個獨立的事物如果內(nèi)層事務(wù)失敗拋出異常內(nèi)層肯定回滾鹏秋,但是外層怎么辦?

而這篇博客就是對Spring傳播特點進行詳細描述亡笑。

Spring事物傳播具體使用場景

public void addUser()
{

}
public void createTransaction()
{
    addUser();
}

事物傳播機制描述的就是當我createTransaction()時候侣夷,由于createTransaction()和addUser()都帶有事物,那么這兩個事物的關(guān)系式怎么樣仑乌,如果是強關(guān)系就是在同一個事物里百拓,這樣當addUser()拋異常的時候會退回到調(diào)用creatTransaction()函數(shù)之前。

這兩者之間會有什么樣場景呢晰甚?這就是考察我們考慮全面性及其自己的產(chǎn)品設(shè)計能力⊙么現(xiàn)在大概想到的會有如下的場景:
1).addUser()分為 處于事物里 inTran1,不在事物里 notTran1.
2).createTransaction() 也有處于事物里 inTran2厕九,不在事物里notTran2
兩兩組合起來就是4種組合場景蓖捶,而這4種組合場景會有不同的表現(xiàn)。
其表現(xiàn)形式會有幾種:
a).拋出異常
b).正常
C).掛起

幾個事物傳播機制具體描述

1).不管使用事物與否扁远,我就使用上層函數(shù)的特性俊鱼,而上層函數(shù)會有事物和無事物。
如果PROPAGATION_NEVER 以非事務(wù)方式執(zhí)行畅买,如果當前存在事務(wù)并闲,則拋出異常。
PROPAGATION_MANDATORY 使用當前的事務(wù)谷羞,如果當前沒有事務(wù)帝火,就拋出異常。

2).require 描述需要 建事物
隨意綁定關(guān)系:PROPAGATION_REQUIRED,有就在一起沒有就自己建一個犀填。
我任性我每次都創(chuàng)建:PROPAGATION_REQUIRES_NEW 每次總是新建事務(wù)蠢壹,如果當前存在事務(wù),把當前事務(wù)掛起宏浩。

3).support 描述支持與否(不會新建)知残,是以事物方式執(zhí)行還是非事物方式執(zhí)行,不會新建
PROPAGATION_SUPPORTS 支持當前事務(wù)比庄,如果當前沒有事務(wù)求妹,就以非事務(wù)方式執(zhí)行。
PROPAGATION_NOT_SUPPORTS 以非事務(wù)方式執(zhí)行操作佳窑,如果當前存在事務(wù)制恍,就把當前事務(wù)掛起。

4).統(tǒng)一提交但是不統(tǒng)一回滾
PROPAGATION_NESTED
理解Nested的關(guān)鍵是savepoint神凑。他與PROPAGATION_REQUIRES_NEW的區(qū)別是净神,PROPAGATION_REQUIRES_NEW另起一個事務(wù),將會與他的父事務(wù)相互獨立溉委,
而Nested的事務(wù)和他的父事務(wù)是相依的鹃唯,他的提交是要等和他的父事務(wù)一塊提交的。也就是說瓣喊,如果父事務(wù)最后回滾坡慌,他也要回滾的。
但是內(nèi)部事務(wù)的回滾不會對外部事務(wù)造成影響藻三。它只對DataSourceTransactionManager事務(wù)管理器起效洪橘。

從回滾的角度來講 事物的特性

如果同一事物的話,子函數(shù)出錯棵帽,子父函數(shù)一同回滾熄求,比如PROPAGATION_REQUIRED,PROPAGATION_MANDATORY逗概,PROPAGATION_SUPPORT
如果父函數(shù)失敗弟晚,我也想子回滾怎么辦,答案是使用PROPAGATION_NESTED仗谆。 嵌套的含義是兩個不同的事物但是父對子有影響指巡。它將創(chuàng)建一個依賴于外層事務(wù)的子事務(wù),當外層事務(wù)提交或回滾時隶垮,子事務(wù)也會連帶提交和回滾。

如果我想子父函數(shù)在事物上沒有關(guān)系怎么辦秘噪?PROPAGATION_REQUIRES_NEW 將創(chuàng)建一個全新的事務(wù)狸吞,它和外層事務(wù)沒有任何關(guān)系。

寫在后面的話

以前看了Spring 幾個傳播機制老想去記,但是今天突然想到設(shè)計者是怎么設(shè)計它的肯定是根據(jù)具體場景來劃分這些傳播層次蹋偏,而這些層次劃分都是依據(jù)關(guān)系而定的便斥。

另外不明白Spring為什么搞這么多傳播機制,我們寫代碼暫時只關(guān)心同一個事物還是不同一個事物威始,同一個事物就可以一起回滾不會出現(xiàn)臟數(shù)據(jù)枢纠。
Spring的默認傳播機制是PROPAGATION_REQUIRES。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末黎棠,一起剝皮案震驚了整個濱河市晋渺,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌脓斩,老刑警劉巖木西,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異随静,居然都是意外死亡八千,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進店門燎猛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來恋捆,“玉大人,你說我怎么就攤上這事重绷》型#” “怎么了?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵论寨,是天一觀的道長星立。 經(jīng)常有香客問我,道長葬凳,這世上最難降的妖魔是什么绰垂? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮火焰,結(jié)果婚禮上劲装,老公的妹妹穿的比我還像新娘。我一直安慰自己昌简,他們只是感情好占业,可當我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著纯赎,像睡著了一般谦疾。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上犬金,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天念恍,我揣著相機與錄音六剥,去河邊找鬼。 笑死峰伙,一個胖子當著我的面吹牛疗疟,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播瞳氓,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼策彤,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了匣摘?” 一聲冷哼從身側(cè)響起店诗,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎恋沃,沒想到半個月后必搞,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡囊咏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年恕洲,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片梅割。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡霜第,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出户辞,到底是詐尸還是另有隱情泌类,我是刑警寧澤,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布底燎,位于F島的核電站刃榨,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏双仍。R本人自食惡果不足惜枢希,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望朱沃。 院中可真熱鬧苞轿,春花似錦、人聲如沸逗物。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽翎卓。三九已至契邀,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間失暴,已是汗流浹背蹂安。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工椭迎, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留锐帜,地道東北人田盈。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像缴阎,于是被迫代替她去往敵國和親允瞧。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,697評論 2 351

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