【面試普通人VS高手系列】Spring中事務的傳播行為有哪些?

来源:https://www.cnblogs.com/mic112/archive/2022/05/08/16246026.html
-Advertisement-
Play Games

一個工作了2年的粉絲,私信了一個比較簡單的問題。 說: “Spring中事務的傳播行為有哪些?” 他說他能記得一些,但是在項目中基本上不需要配置,所以一下就忘記了。 結果導致面試被拒絕,有點遺憾! ok,關於這個問題,看看普通人和高手的回答。 普通人: 嗯。。。。。。。。 高手: 對於這個問題,需要 ...


一個工作了2年的粉絲,私信了一個比較簡單的問題。

說: “Spring中事務的傳播行為有哪些?”

他說他能記得一些,但是在項目中基本上不需要配置,所以一下就忘記了。

結果導致面試被拒絕,有點遺憾!

ok,關於這個問題,看看普通人和高手的回答。

普通人:

嗯。。。。。。。。

高手:

對於這個問題,需要從幾個方面去回答。

首選, 所謂的事務傳播行為,就是多個聲明瞭事務的方法相互調用的時候,這個事務應該如何傳播。

比如說,methodA()調用methodB(),兩個方法都顯示的開啟了事務。

carbon-202204111807

那麼methodB()是開啟一個新事務,還是繼續在methodA()這個事務中執行?就取決於事務的傳播行為。

在Spring中,定義了7種事務傳播行為。

  1. REQUIRED:預設的Spring事物傳播級別,如果當前存在事務,則加入這個事務,如果不存在事務,就新建一個事務。
  2. REQUIRE_NEW:不管是否存在事務,都會新開一個事務,新老事務相互獨立。外部事務拋出異常回滾不會影響內部事務的正常提交。
  3. NESTED:如果當前存在事務,則嵌套在當前事務中執行。如果當前沒有事務,
    則新建一個事務,類似於REQUIRE_NEW。
  4. SUPPORTS:表示支持當前事務,如果當前不存在事務,以非事務的方式執行。
  5. NOT_SUPPORTED:表示以非事務的方式來運行,如果當前存在事務,則把當前事務掛起。
  6. MANDATORY:強制事務執行,若當前不存在事務,則拋出異常.
  7. NEVER:以非事務的方式執行,如果當前存在事務,則拋出異常。

Spring事務傳播級別一般不需要定義,預設就是PROPAGATION_REQUIRED,除非在嵌套事務的情況下需要重點瞭解。

以上就是我對這個問題的理解!

總結

這個問題其實只需要理解事務傳播行為的本質以及為什麼需要考慮到事務傳播的問題。

就可以直接基於自身的技術積累來推演出答案,無非就是基於可能的策略進行窮舉,怎麼也能推演出5種吧。

本期的普通人VS高手面試系列就到這裡結束了。

有任何不懂的技術面試題,歡迎隨時私信我

file

版權聲明:本博客所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 Mic帶你學架構
如果本篇文章對您有幫助,還請幫忙點個關註和贊,您的堅持是我不斷創作的動力。歡迎關註「跟著Mic學架構」公眾號公眾號獲取更多技術乾貨!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 認識js 在谷歌瀏覽器的控制臺中右鍵單擊空白處,選擇檢查可以打開控制台 查看console.log輸出的內容。 JS的註釋 是”//”或者”/* */”,前者是行註釋,後者是塊註釋 1變數 js的變數必須申明在用,聲明後賦值,變數才可使用,使用過程中可以改變類型。 變數的命名規則: 變數名只能由字母 ...
  • 幾天的內容不是很多,因為我們腳手架的學習告一段落了,也是為了跟明天開始的內容有一個區分。 明天將會有一個非常重要的內容來了,各位,vue中的ajax他來了,這個絕對是重量級,有點興奮! 十一.TODOList編輯 新增一個編輯功能,要完成的邏輯就是,當我們一點擊編輯按鈕,對象會新增一個屬性edit為 ...
  • # JavaScript經典案例練習 P1:支付10秒倒計時 效果: 功能: 點擊立即支付彈出確認款 確認付款後跳轉到支付成功頁面並開始計時 計時結束或者點擊立即返回按鈕返迴首頁 知識點: window.confirm() 用於顯示一個帶有指定消息和確認及取消按鈕的對話框,如果訪問者點擊‘確認’, ...
  • ${}字元串可以用於字元串拼接,一般用於模糊查詢中(因為有sql註入的風險,很少用) ...
  • 在開發過程中,不知道有沒有這樣的經歷,項目實際讀取的配置信息有時候總是與預期不符,今天就來研究下 SpringBoot 讀取配置文件順序。 一、SpringBoot 配置文件載入優先順序 SpringBoot官方文檔說明瞭載入的順序如下,越靠前優先順序越高。 Spring Boot uses a ver ...
  • 前言 嗨嘍!大家好呀 第三方模塊: requests >>> pip install requests 模塊安裝問題: 如果安裝python第三方模塊: win + R 輸入 cmd 點擊確定, 輸入安裝命令 pip install 模塊名 (pip install requests) 回車 在py ...
  • 一、Matplotlib 博文來源:https://www.runoob.com/matplotlib/matplotlib-tutorial.html Matplotlib 是 Python 的繪圖庫,它能讓使用者很輕鬆地將數據圖形化,並且提供多樣化的輸出格式。 Matplotlib 可以用來繪製 ...
  • 在系統開發的過程中,必然存在耗時極高的動作,是基於請求響應模式無法解決的問題,通常會採用解耦的思維,並基於非同步或者事件驅動的方式去調度整個流程的完整執行。 ...
一周排行
    -Advertisement-
    Play Games
  • 下麵是一個標準的IDistributedCache用例: public class SomeService(IDistributedCache cache) { public async Task<SomeInformation> GetSomeInformationAsync (string na ...
  • 這個庫提供了在啟動期間實例化已註冊的單例,而不是在首次使用它時實例化。 單例通常在首次使用時創建,這可能會導致響應傳入請求的延遲高於平時。在註冊時創建實例有助於防止第一次Request請求的SLA 以往我們要在註冊的時候實例單例可能會這樣寫: //註冊: services.AddSingleton< ...
  • 最近公司的很多項目都要改單點登錄了,不過大部分都還沒敲定,目前立刻要做的就只有一個比較老的項目 先改一個試試手,主要目標就是最短最快實現功能 首先因為要保留原登錄方式,所以頁面上的改動就是在原來登錄頁面下加一個SSO登錄入口 用超鏈接寫的入口,頁面改造後如下圖: 其中超鏈接的 href="Staff ...
  • Like運算符很好用,特別是它所提供的其中*、?這兩種通配符,在Windows文件系統和各類項目中運用非常廣泛。 但Like運算符僅在VB中支持,在C#中,如何實現呢? 以下是關於LikeString的四種實現方式,其中第四種為Regex正則表達式實現,且在.NET Standard 2.0及以上平... ...
  • 一:背景 1. 講故事 前些天有位朋友找到我,說他們的程式記憶體會偶發性暴漲,自己分析了下是非托管記憶體問題,讓我幫忙看下怎麼回事?哈哈,看到這個dump我還是非常有興趣的,居然還有這種游戲幣自助機類型的程式,下次去大玩家看看他們出幣的機器後端是不是C#寫的?由於dump是linux上的程式,剛好win ...
  • 前言 大家好,我是老馬。很高興遇到你。 我們為 java 開發者實現了 java 版本的 nginx https://github.com/houbb/nginx4j 如果你想知道 servlet 如何處理的,可以參考我的另一個項目: 手寫從零實現簡易版 tomcat minicat 手寫 ngin ...
  • 上一次的介紹,主要圍繞如何統一去捕獲異常,以及為每一種異常添加自己的Mapper實現,並且我們知道,當在ExceptionMapper中返回非200的Response,不支持application/json的響應類型,而是寫死的text/plain類型。 Filter為二方包異常手動捕獲 參考:ht ...
  • 大家好,我是R哥。 今天分享一個爽飛了的面試輔導 case: 這個杭州兄弟空窗期 1 個月+,面試了 6 家公司 0 Offer,不知道問題出在哪,難道是杭州的 IT 崩盤了麽? 報名面試輔導後,經過一個多月的輔導打磨,現在成功入職某上市公司,漲薪 30%+,955 工作制,不咋加班,還不捲。 其他 ...
  • 引入依賴 <!--Freemarker wls--> <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.30</version> </dependency> ...
  • 你應如何運行程式 互動式命令模式 開始一個互動式會話 一般是在操作系統命令行下輸入python,且不帶任何參數 系統路徑 如果沒有設置系統的PATH環境變數來包括Python的安裝路徑,可能需要機器上Python可執行文件的完整路徑來代替python 運行的位置:代碼位置 不要輸入的內容:提示符和註 ...