一個作業了2年的粉絲,私信了一個比較簡單的問題,
說: “Spring中事務的傳播行為有哪些?”
他說他能記得一些,但是在專案中基本上不需要配置,所以一下就忘記了,
結果導致面試被拒絕,有點遺憾!
ok,關于這個問題,看看普通人和高手的回答,
普通人:
嗯,,,,,,,,
高手:
對于這個問題,需要從幾個方面去回答,
首選, 所謂的事務傳播行為,就是多個宣告了事務的方法相互呼叫的時候,這個事務應該如何傳播,
比如說,methodA()呼叫methodB(),兩個方法都顯示的開啟了事務,

那么methodB()是開啟一個新事務,還是繼續在methodA()這個事務中執行?就取決于事務的傳播行為,
在Spring中,定義了7種事務傳播行為,
- REQUIRED:默認的Spring事物傳播級別,如果當前存在事務,則加入這個事務,如果不存在事務,就新建一個事務,
- REQUIRE_NEW:不管是否存在事務,都會新開一個事務,新老事務相互獨立,外部事務拋出例外回滾不會影響內部事務的正常提交,
- NESTED:如果當前存在事務,則嵌套在當前事務中執行,如果當前沒有事務,
則新建一個事務,類似于REQUIRE_NEW, - SUPPORTS:表示支持當前事務,如果當前不存在事務,以非事務的方式執行,
- NOT_SUPPORTED:表示以非事務的方式來運行,如果當前存在事務,則把當前事務掛起,
- MANDATORY:強制事務執行,若當前不存在事務,則拋出例外.
- NEVER:以非事務的方式執行,如果當前存在事務,則拋出例外,
Spring事務傳播級別一般不需要定義,默認就是PROPAGATION_REQUIRED,除非在嵌套事務的情況下需要重點了解,
以上就是我對這個問題的理解!
總結
這個問題其實只需要理解事務傳播行為的本質以及為什么需要考慮到事務傳播的問題,
就可以直接基于自身的技識訓累來推演出答案,無非就是基于可能的策略進行窮舉,怎么也能推演出5種吧,
本期的普通人VS高手面試系列就到這里結束了,
有任何不懂的技術面試題,歡迎隨時私信我
著作權宣告:本博客所有文章除特別宣告外,均采用 CC BY-NC-SA 4.0 許可協議,轉載請注明來自
Mic帶你學架構!
如果本篇文章對您有幫助,還請幫忙點個關注和贊,您的堅持是我不斷創作的動力,歡迎關注「跟著Mic學架構」公眾號公眾號獲取更多技術干貨!

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/470596.html
標籤:其他
上一篇:Arrays.sort
下一篇:如何將狀態傳播到特定陣列中
