日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Spring中事務(wù)的傳播行為說明以及怎么對事務(wù)進行管理

這篇文章主要講解了“Spring中事務(wù)的傳播行為說明以及怎么對事務(wù)進行管理”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Spring中事務(wù)的傳播行為說明以及怎么對事務(wù)進行管理”吧!

龍海ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!

當我們在spring中調(diào)用Service中一個方法時,如果我們默認配置了對Service的事務(wù)管理,那么此時的Service將運行在一個由spring管理的事務(wù)環(huán)境中。由于在我們?nèi)粘5拈_發(fā)時,通常會在一個Service接口中調(diào)用其它Service中的接口以此來完成一個完整的事務(wù)操作,這時就會發(fā)生服務(wù)接口嵌套調(diào)用的情況,spring通過事務(wù)傳播行為控制當前事務(wù)如何傳播到被嵌套調(diào)用的目標服務(wù)接口方法中的。下面我們想想了解一下在spring中都有哪些不同的事務(wù)傳播行為,以前它們的區(qū)別。

spring在TransactionDefinition接口中定義了7種類型的事務(wù)傳播行為,它們具體的區(qū)別如下:

事務(wù)傳播行為說明

  • PROPAGATION_REQUIRED:如果當前沒有事務(wù),那就新建一個新的事務(wù),如果已經(jīng)存在一個事務(wù),那就加入到這個事務(wù)中。

  • PROPAGATION_SUPPORTS:支持當前事務(wù),如果當前沒有事務(wù),就以非事務(wù)方法執(zhí)行。

  • PROPAGATION_MANDATORY:使用當前事務(wù),如果當前沒有事務(wù),則就拋出異常。

  • PROPAGATION_REQUIRES_NEW:新建事務(wù),如果當前存在事務(wù),則把當前事務(wù)掛起。

  • PROPAGATION_NOT_SUPPORTED:以非事務(wù)方式執(zhí)行操作,如果當前存在事務(wù),則把當前事務(wù)掛起。

  • PROPAGATION_NEVER:以非事務(wù)方式執(zhí)行,如果當前存在事務(wù),則拋出異常

  • PROPAGATION_NESTED:如果當前存在事務(wù),則在嵌套事務(wù)內(nèi)執(zhí)行,如果當前沒有事務(wù),則執(zhí)行與PROPAGATION_REQUIRED類似的操作。

備注:當使有PROPAGATION_NESTED時,底層的數(shù)據(jù)源必須基于JDBC3.0,并且實現(xiàn)者需要支持保存點事務(wù)機制。

我們在實際開發(fā)時,基本不會通過編碼的方式來進行事務(wù)管理,因為這樣很不方便管理,在實際的開發(fā)中我們一般會采用xml的方法或者注解的方法來進行事務(wù)管理。雖然我們不會直接采用編碼的方法進行事務(wù)管理,但在spring中還是提供了對該方法的支持。我們可以直接使用spring為我們提供的TransactionTemplate模板類來執(zhí)行我們用編碼的方式對事務(wù)進行管理。下面我們簡單了解一下TransactionTemplate模板類的主要方法。

Spring中事務(wù)的傳播行為說明以及怎么對事務(wù)進行管理

Spring中事務(wù)的傳播行為說明以及怎么對事務(wù)進行管理

下面我們通過一個簡單的測試用例來看一下到底怎么用ransactionTemplate模板類通過編碼的方法進行事務(wù)管理。

Spring中事務(wù)的傳播行為說明以及怎么對事務(wù)進行管理

由于spring事務(wù)管理器TransactionSynchronizationManager進行工作,所以如果在回調(diào)接口方法中需要顯示的訪問數(shù)據(jù)庫連接,必須通過資源獲取工具類得到線程綁定的數(shù)據(jù)連接,因為這是spring事務(wù)管理的底層協(xié)議。如果DAO接口是基于spring提供的模板類創(chuàng)建的,由于模板類已經(jīng)在內(nèi)部使用了資源獲取工具類獲取數(shù)據(jù)庫連接,所以用戶就不必關(guān)心底層數(shù)據(jù)連接的獲取問題了。

上面我們提到過,在我們?nèi)粘i_發(fā)時,不是會采用用編碼的方式管理事務(wù)的,我們基本上會采用聲明式事務(wù)管理功能,因為這種方式可以讓事務(wù)管理代碼完全從業(yè)務(wù)代碼中解耦。在spring中聲明式事務(wù)管理是通過spring AOP的功能實現(xiàn)的。具體的流程是通過事務(wù)的聲明信息,spring負責將事務(wù)管理增強邏輯動態(tài)織入到業(yè)務(wù)方法的相應(yīng)連接點中。下面我們通過xml代碼的方法來管理事務(wù)。

Spring中事務(wù)的傳播行為說明以及怎么對事務(wù)進行管理

UserDao接口中有兩個方法,我們可以對對save方法添加寫的事務(wù)能力,而對getUserInfo方法添加讀事務(wù)能力。

Spring中事務(wù)的傳播行為說明以及怎么對事務(wù)進行管理

我們可以看到,采用xml管理事務(wù)和直接用編碼的方法有很大的不同的,在接口的實現(xiàn)類中只有相關(guān)的業(yè)務(wù)代碼,并不會有任何相關(guān)事務(wù)的代碼,而用直接編碼的方法則必須手動的將管理事務(wù)的代碼編寫在接口的實現(xiàn)類中。在spring中可以用兩種方式來通過xml管理事務(wù),一種方式是TransactionProxyFactoryBean的方式來進行事務(wù)管理,還有一種方式是通過tx的方式來管理事務(wù),因為TransactionProxyFactoryBean的方式spring官網(wǎng)中已經(jīng)不推薦使用了,所以,我們下面的測試用例將采用用tx的方式來管理事務(wù)。

Spring中事務(wù)的傳播行為說明以及怎么對事務(wù)進行管理

感謝各位的閱讀,以上就是“Spring中事務(wù)的傳播行為說明以及怎么對事務(wù)進行管理”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對Spring中事務(wù)的傳播行為說明以及怎么對事務(wù)進行管理這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!


文章標題:Spring中事務(wù)的傳播行為說明以及怎么對事務(wù)進行管理
文章分享:http://www.dlmjj.cn/article/ipdioh.html