中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

Spring中propagation屬性的作用是什么

Spring中propagation屬性的作用是什么,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

成都創(chuàng)新互聯(lián)專注于企業(yè)成都全網(wǎng)營銷、網(wǎng)站重做改版、雅安網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、H5響應(yīng)式網(wǎng)站、成都做商城網(wǎng)站、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為雅安等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

在Spring的事務(wù)管理中,我們可以使用@Transactional來對事務(wù)進(jìn)行聲明式的設(shè)定。具體而言,就是在類或者方法前添加@Transactional并傳入屬性參數(shù)以獲取所需要的Transaction特性。Spring中的@Transactional有5個屬性:Propagation、Isolation、Rollback Rules、Timeout和Read-Only,其中Propagation屬性定義了Transaction的邊界 — 是否使用Transaction、在Transaction已存在的情況下如何表現(xiàn)等。

在service類前加上@Transactional,聲明這個service所有方法需要事務(wù)管理。每一個業(yè)務(wù)方法開始時都會打開一個事務(wù)。 

Spring默認(rèn)情況下會對運行期例外(RunTimeException)進(jìn)行事務(wù)回滾。這個例外是unchecked,如果遇到checked意外就不回滾。 

如何改變默認(rèn)規(guī)則:
1 讓checked例外也回滾:在整個方法前加上 @Transactional(rollbackFor=Exception.class) 
2 讓unchecked例外不回滾: @Transactional(notRollbackFor=RunTimeException.class) 
3 不需要事務(wù)管理的(只查詢的)方法:@Transactional(propagation=Propagation.NOT_SUPPORTED) 

在整個方法運行前就不會開啟事務(wù) 
       還可以加上:@Transactional(propagation=Propagation.NOT_SUPPORTED,readOnly=true),這樣就做成一個只讀事務(wù),可以提高效率。 

各種屬性的意義:
       REQUIRED:業(yè)務(wù)方法需要在一個容器里運行。如果方法運行時,已經(jīng)處在一個事務(wù)中,那么加入到這個事務(wù),否則自己新建一個新的事務(wù)。 

       NOT_SUPPORTED:聲明方法不需要事務(wù)。如果方法沒有關(guān)聯(lián)到一個事務(wù),容器不會為他開啟事務(wù),如果方法在一個事務(wù)中被調(diào)用,該事務(wù)會被掛起,調(diào)用結(jié)束后,原先的事務(wù)會恢復(fù)執(zhí)行。 

       REQUIRESNEW:不管是否存在事務(wù),該方法總匯為自己發(fā)起一個新的事務(wù)。如果方法已經(jīng)運行在一個事務(wù)中,則原有事務(wù)掛起,新的事務(wù)被創(chuàng)建。 

       MANDATORY:該方法只能在一個已經(jīng)存在的事務(wù)中執(zhí)行,業(yè)務(wù)方法不能發(fā)起自己的事務(wù)。如果在沒有事務(wù)的環(huán)境下被調(diào)用,容器拋出例外。 

       SUPPORTS:該方法在某個事務(wù)范圍內(nèi)被調(diào)用,則方法成為該事務(wù)的一部分。如果方法在該事務(wù)范圍外被調(diào)用,該方法就在沒有事務(wù)的環(huán)境下執(zhí)行。 

       NEVER:該方法絕對不能在事務(wù)范圍內(nèi)執(zhí)行。如果在就拋例外。只有該方法沒有關(guān)聯(lián)到任何事務(wù),才正常執(zhí)行。 

       NESTED:如果一個活動的事務(wù)存在,則運行在一個嵌套的事務(wù)中。如果沒有活動事務(wù),則按REQUIRED屬性執(zhí)行。它使用了一個單獨的事務(wù),這個事務(wù)擁有多個可以回滾的保存點。內(nèi)部事務(wù)的回滾不會對外部事務(wù)造成影響。它只對DataSourceTransactionManager事務(wù)管理器起效。 

Propagation屬性outMethodinnerMethod
Propagation.MANDATORY拋出異常在outMethod的Transaction中運行
Propagation.NEVER不在Transaction中運行拋出異常
Propagation.NOT_SUPPORTED不在Transaction中運行outMethod的Transaction暫停直至innerMethod執(zhí)行完畢
Propagation.REQUIRED ( 默認(rèn)值 )新開一個Transaction并在其中運行在outMethod的Transaction中運行
Propagation.REQUIRES_NEW新開一個Transaction并在其中運行outMethod的Transaction暫停直至innerMethod中新開的Transaction執(zhí)行完畢
Propagation.SUPPORTS不在Transaction中運行在outMethod的Transaction中運行

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。

當(dāng)前題目:Spring中propagation屬性的作用是什么
本文鏈接:http://www.rwnh.cn/article40/gpoeho.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、域名注冊、關(guān)鍵詞優(yōu)化、品牌網(wǎng)站制作自適應(yīng)網(wǎng)站、電子商務(wù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

綿陽服務(wù)器托管
龙山县| 遵义县| 临邑县| 武山县| 崇明县| 弥勒县| 灵台县| 昌都县| 洞口县| 武汉市| 鞍山市| 交城县| 介休市| 城市| 龙井市| 从化市| 新营市| 凉山| 海安县| 大港区| 乌鲁木齐市| 菏泽市| 施甸县| 桃园市| 朔州市| 娱乐| 冕宁县| 平乐县| 广宗县| 京山县| 湟中县| 文化| 天镇县| 安国市| 泗阳县| 香港| 柯坪县| 措勤县| 博罗县| 望谟县| 邯郸市|