最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring中propagation的傳播機制詳解

 更新時間:2023年12月15日 10:29:23   作者:澇山道士  
這篇文章主要介紹了Spring中propagation的傳播機制詳解,要搞懂事務(wù)的傳播機制,那么就要明白邏輯事務(wù)中各個事務(wù)的關(guān)系,才能徹底理解事務(wù)傳播特性,在Spring事務(wù)中,各個邏輯事務(wù)的關(guān)系可以是并列、覆蓋或包含,需要的朋友可以參考下

事務(wù)傳播機制-propagation

要搞懂事務(wù)的傳播機制,那么就要明白邏輯事務(wù)中各個事務(wù)的關(guān)系,才能徹底理解事務(wù)傳播特性。

物理事務(wù)與邏輯事務(wù)

事務(wù)性資源實際打開的事務(wù)就是物理事務(wù),如數(shù)據(jù)庫事務(wù)。

而Spring會為每個@Transactional注解的方法創(chuàng)建一個事務(wù)范圍,這種事務(wù)無法影響數(shù)據(jù)庫事務(wù)的實現(xiàn),因此可以理解為邏輯事務(wù)。

在Spring事務(wù)中,各個邏輯事務(wù)的關(guān)系可以是并列、覆蓋或包含。

對于并排:并發(fā)情況下,多個線程相互執(zhí)行自己的事務(wù),互不影響(單指事務(wù)異?;貪L,不涉及事務(wù)隔離)。 . 對于覆蓋:是指層層嵌套的方法共用同一個事務(wù),事務(wù)的屬性由最外圍方法的屬性值決定。這些方法要么同時執(zhí)行成功要么同時回滾。 . 對于包含:大范圍的事務(wù)稱為外圍事務(wù),小范圍的事務(wù)稱為內(nèi)部事務(wù),外圍事務(wù)可以包含內(nèi)部事務(wù)。他們在邏輯上是互相獨立的。每個內(nèi)部事務(wù),都能獨立設(shè)置如read-only等屬性,而不影響外圍事務(wù)。

如何處理邏輯事務(wù)內(nèi)部以及與物理事務(wù)之間的關(guān)聯(lián)關(guān)系,就是傳播特性解決的問題。

事務(wù)的傳播類型

REQUIRED

Spring默認(rèn)的事務(wù)傳播機制。支持當(dāng)前事務(wù);如果不存在事務(wù),則創(chuàng)建一個新的事務(wù)。

參與到一個已存在的更大范圍的外圍事務(wù)中,如果沒有外圍事務(wù),就打開一個新事務(wù)用于當(dāng)前范圍。在相同的線程中,這是一種很好的事務(wù)安排方式。

注:一個參與到外圍事務(wù)的事務(wù),會使用外圍事務(wù)的特性,安靜地忽略掉自己的隔離級別,超時值,只讀標(biāo)識等設(shè)置。

當(dāng)然可以在事務(wù)管理器上設(shè)置validateExistingTransactions標(biāo)識為true,這樣當(dāng)你自己的事務(wù)和參與到的外圍事務(wù)設(shè)置不一樣時會被拒絕。

REQUIRES_NEW

創(chuàng)建一個新事務(wù),如果當(dāng)前存在事務(wù),則暫停當(dāng)前事務(wù)。

與REQUIRED相比,總是使用一個獨立的事務(wù)用于當(dāng)前的邏輯事務(wù),從來不參與到一個已存在的外圍事務(wù)范圍。

這樣安排的話,底層的事務(wù)資源是不同的,因此,可以獨立地提交或回滾。外圍事務(wù)不會被內(nèi)部事務(wù)的回滾狀態(tài)影響。

這樣一個獨立的內(nèi)部事務(wù)可以聲明自己的隔離級別,超時時間和只讀設(shè)置,并不繼承外圍事務(wù)的特性,也不會被外圍事務(wù)覆蓋。

與NOT_SUPPORTED類似,我們需要JTATransactionManager來實現(xiàn)實際的事務(wù)暫停。

MANDATORY(強制的)

僅支持當(dāng)前事務(wù);如果當(dāng)前事務(wù)不存在,則拋出異常。

NESTED(嵌套)

如果存在當(dāng)前事務(wù),則在該事務(wù)種嵌套執(zhí)行。同時將在這段邏輯事務(wù)開始處標(biāo)記一個保存點,當(dāng)這個邏輯事務(wù)拋出異?;貪L時,那么事務(wù)將跳轉(zhuǎn)到保存點,從而不影響嵌套事務(wù)的外部。 當(dāng)前事務(wù)不存在時,同REQUIRED。

當(dāng)事務(wù)存在時,使用同一個事務(wù),該事務(wù)可能會帶有多個保存點,回滾到這些保存點從而不會影響整個事務(wù)??梢哉J(rèn)為是部分回滾,這樣一個內(nèi)部事務(wù)范圍觸發(fā)了一個回滾,外圍事務(wù)能夠繼續(xù)這個物理事務(wù),盡管有一些操作已經(jīng)被回滾。

DataSourceTransactionManager支持這種開箱即用的傳播。

JTATransactionManager的一些實現(xiàn)也可能支持這一點。不過JpaTransactionManager僅支持JDBC連接的NESTED, 如果我們將nestedTransactionAllowed標(biāo)志設(shè)置為true,且JDBC驅(qū)動程序支持保存點,它也適用于JPA事務(wù)中的JDBC訪問代碼。

NEVER

非事務(wù)執(zhí)行,如果存在事務(wù),則拋出異常。

SUPPORTS

支持當(dāng)前事務(wù),如果不存在則以非事務(wù)方式執(zhí)行。

NOT_SUPPORTED

以非事務(wù)方式執(zhí)行,如果當(dāng)前事務(wù)存在,則掛起當(dāng)前事務(wù)。

JTATransactionManager開箱即用地支持真正的事務(wù)暫停。其他人通過持有對現(xiàn)有的引用然后從線程上下文中清除它來模擬暫停

TIMEOUT_DEFAULT

使用默認(rèn)超時的底層事務(wù)系統(tǒng),或者如果不支持超時則沒有。

到此這篇關(guān)于Spring中propagation的傳播機制詳解的文章就介紹到這了,更多相關(guān)propagation傳播機制內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java中Stream流中map和forEach的區(qū)別詳解

    Java中Stream流中map和forEach的區(qū)別詳解

    本文主要介紹了Java中Stream流中map和forEach的區(qū)別詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • Elasticsearch 基礎(chǔ)介紹及索引原理分析

    Elasticsearch 基礎(chǔ)介紹及索引原理分析

    這篇文章主要介紹了Elasticsearch 基礎(chǔ)介紹及索引原理分析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-07-07
  • 基于Comparator對象集合實現(xiàn)多個條件按照優(yōu)先級的比較

    基于Comparator對象集合實現(xiàn)多個條件按照優(yōu)先級的比較

    這篇文章主要介紹了基于Comparator對象集合實現(xiàn)多個條件按照優(yōu)先級的比較,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • 淺談Java代碼的 微信長鏈轉(zhuǎn)短鏈接口使用 post 請求封裝Json(實例)

    淺談Java代碼的 微信長鏈轉(zhuǎn)短鏈接口使用 post 請求封裝Json(實例)

    下面小編就為大家?guī)硪黄獪\談Java代碼的 微信長鏈轉(zhuǎn)短鏈接口使用 post 請求封裝Json(實例)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • SpringMVC中RequestContextHolder獲取請求信息的方法

    SpringMVC中RequestContextHolder獲取請求信息的方法

    這篇文章主要介紹了SpringMVC中RequestContextHolder獲取請求信息的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • Springboot集成activity過程圖解

    Springboot集成activity過程圖解

    這篇文章主要介紹了Springboot集成activity過程圖解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04
  • Java字符串相關(guān)類操作方法詳解

    Java字符串相關(guān)類操作方法詳解

    這篇文章主要給大家介紹了關(guān)于Java字符串相關(guān)類操作的相關(guān)資料,文中還特別介紹了字符串的定義、構(gòu)造方法、內(nèi)存原理、比較方法和常見方法,同時還介紹了StringBuilder和StringJoiner類,需要的朋友可以參考下
    2024-12-12
  • Mybatis-Plus insertBatch執(zhí)行緩慢的原因查詢

    Mybatis-Plus insertBatch執(zhí)行緩慢的原因查詢

    這篇文章主要介紹了Mybatis-Plus insertBatch執(zhí)行緩慢的原因查詢,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • 快速搭建springboot項目(新手入門)

    快速搭建springboot項目(新手入門)

    本文主要介紹了快速搭建springboot項目(新手入門),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • java selenium Selenium IDE介紹及用法

    java selenium Selenium IDE介紹及用法

    本文主要介紹java selenium Selenium IDE,這里整理了相關(guān)資料和介紹如何安裝 Selenium IDE和使用方法,有需要的小伙伴可以參考下
    2016-08-08

最新評論

桃江县| 泊头市| 漳州市| 蒙自县| 沁阳市| 安国市| 交城县| 吐鲁番市| 霍邱县| 沂源县| 新郑市| 中方县| 光山县| 新巴尔虎左旗| 涟水县| 台北市| 兰考县| 庄浪县| 井研县| 莫力| 临澧县| 达拉特旗| 濉溪县| 彩票| 乌拉特前旗| 稷山县| 峨眉山市| 利川市| 荔浦县| 汉源县| 兴义市| 息烽县| 聂荣县| 三江| 迁安市| 沭阳县| 铜鼓县| 开江县| 漯河市| 呼玛县| 茌平县|