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

Spring中的@Transactional注解使用詳解

 更新時(shí)間:2024年01月30日 09:23:04   作者:小小懶懶  
這篇文章主要介紹了Spring中的@Transactional注解使用詳解,@Transactional 是一個(gè)注解,用于在 Spring 框架中管理事務(wù)的聲明式事務(wù)管理機(jī)制,它可以應(yīng)用于方法或類級(jí)別,并指示方法或類在執(zhí)行時(shí)應(yīng)該被包裝在一個(gè)事務(wù)中,需要的朋友可以參考下

@Transactional 注解介紹

@Transactional 是一個(gè)注解,用于在 Spring 框架中管理事務(wù)的聲明式事務(wù)管理機(jī)制。

它可以應(yīng)用于方法或類級(jí)別,并指示方法或類在執(zhí)行時(shí)應(yīng)該被包裝在一個(gè)事務(wù)中。

使用 @Transactional 注解的方法在執(zhí)行時(shí)會(huì)被 Spring 框架自動(dòng)處理事務(wù)的起始、提交或回滾等操作,簡化了事務(wù)管理的編碼工作。

  • 當(dāng)方法執(zhí)行成功時(shí),事務(wù)會(huì)被提交,數(shù)據(jù)的變更會(huì)持久化到數(shù)據(jù)庫;
  • 當(dāng)方法執(zhí)行失敗時(shí),事務(wù)會(huì)被回滾,之前的數(shù)據(jù)變更會(huì)被撤銷。

@Transactional 注解的常見屬性和行為

  • propagation:指定事務(wù)的傳播行為。它定義了事務(wù)方法被另一個(gè)事務(wù)方法調(diào)用時(shí),事務(wù)應(yīng)該如何傳播。常用的傳播行為包括 REQUIRED、REQUIRES_NEW、NESTED 等。
  • isolation:指定事務(wù)的隔離級(jí)別。它定義了事務(wù)方法在并發(fā)環(huán)境中處理數(shù)據(jù)一致性的程度,包括 DEFAULT、READ_UNCOMMITTED、READ_COMMITTED、REPEATABLE_READ、SERIALIZABLE 等級(jí)別。
  • readOnly:指定事務(wù)是否為只讀。如果設(shè)置為 true,則表示事務(wù)只讀,不會(huì)對(duì)數(shù)據(jù)進(jìn)行修改。這樣可以提高數(shù)據(jù)庫的讀取性能。
  • timeout:指定事務(wù)的超時(shí)時(shí)間(以秒為單位)。如果事務(wù)執(zhí)行時(shí)間超過指定的超時(shí)時(shí)間,事務(wù)將被回滾。
  • rollbackFor 和 noRollbackFor:用于指定在遇到特定的異常時(shí)事務(wù)是否回滾??梢栽O(shè)置特定的異常類,或者使用異常類的父類或接口。
  • rollbackOn 和 noRollbackOn:與 rollbackFor 和 noRollbackFor 類似,用于指定在遇到特定的異常類型時(shí)事務(wù)是否回滾,但使用的是異常類的名字字符串。
  • value 和 transactionManager:用于指定事務(wù)管理器的名稱。如果應(yīng)用中存在多個(gè)事務(wù)管理器,可以通過這兩個(gè)屬性指定使用哪個(gè)事務(wù)管理器。

以下是一個(gè)示例代碼,展示了 @Transactional 注解的使用:

@Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.DEFAULT, readOnly = false)
public void saveOrder(Order order) {
    // 保存訂單的邏輯
    // ...
}
@Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.READ_COMMITTED)
public void updateProductQuantity(String productId, int quantity) {
    // 更新產(chǎn)品庫存的邏輯
    // ...
}

在上述示例中,saveOrder 方法和 updateProductQuantity 方法都被 @Transactional 注解修飾,表示它們會(huì)在事務(wù)中執(zhí)行。

saveOrder 方法使用默認(rèn)的傳播行為和隔離級(jí)別,而 updateProductQuantity 方法指定了傳播行為為 REQUIRED,隔離級(jí)別為 READ_COMMITTED。

需要注意的是,@Transactional 注解只能應(yīng)用于公共方法。當(dāng)調(diào)用被注解的方法時(shí),事務(wù)的生效是通過 Spring AOP 實(shí)現(xiàn)的,所以該注解需要在 Spring 管理的 Bean 中才能生效。

同時(shí),建議將 @Transactional 注解應(yīng)用在業(yè)務(wù)層而非持久層,以便事務(wù)的粒度更加明確和控制。

總結(jié)

要知道@Transactional注解里面每個(gè)屬性的含義。@Transactional注解屬性就是來控制事務(wù)屬性的。通過這些屬性來生成事務(wù)。

要明確我們添加的@Transactional注解會(huì)不會(huì)起作用。

@Transactional注解在外部調(diào)用的函數(shù)上才有效果,內(nèi)部調(diào)用的函數(shù)添加無效,要切記。這是由AOP的特性決定的。

要明確事務(wù)的作用范圍,有@Transactional的函數(shù)調(diào)用有@Transactional的函數(shù)的時(shí)候,進(jìn)入第二個(gè)函數(shù)的時(shí)候是新的事務(wù),還是沿用之前的事務(wù)。稍不注意就會(huì)拋UnexpectedRollbackException異常。

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

相關(guān)文章

  • Spring Boot 中該如何防御計(jì)時(shí)攻擊

    Spring Boot 中該如何防御計(jì)時(shí)攻擊

    這篇文章主要介紹了Spring Boot 中該如何防御計(jì)時(shí)攻擊,幫助大家更好的使用spring boot框架,感興趣的朋友可以了解下
    2020-09-09
  • Java多線程Condition接口原理介紹

    Java多線程Condition接口原理介紹

    這篇文章主要介紹了Java多線程Condition接口原理介紹,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • Java使用snmp協(xié)議實(shí)現(xiàn)采集服務(wù)器信息

    Java使用snmp協(xié)議實(shí)現(xiàn)采集服務(wù)器信息

    SNMP是一種用于管理網(wǎng)絡(luò)設(shè)備的協(xié)議,它是一種標(biāo)準(zhǔn)化的協(xié)議,被用于監(jiān)控和管理網(wǎng)絡(luò)設(shè)備,這篇文章主要介紹了Java如何使用snmp協(xié)議采集服務(wù)器信息,需要的可以參考下
    2024-12-12
  • SchedulingConfigurer實(shí)現(xiàn)動(dòng)態(tài)定時(shí),導(dǎo)致ApplicationRunner無效解決

    SchedulingConfigurer實(shí)現(xiàn)動(dòng)態(tài)定時(shí),導(dǎo)致ApplicationRunner無效解決

    這篇文章主要介紹了SchedulingConfigurer實(shí)現(xiàn)動(dòng)態(tài)定時(shí),導(dǎo)致ApplicationRunner無效的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Spring Boot應(yīng)用的極速部署腳本示例代碼

    Spring Boot應(yīng)用的極速部署腳本示例代碼

    最近在工作中遇到了一個(gè)問題,需要極速的部署Spring Boot應(yīng)用,發(fā)現(xiàn)網(wǎng)上這方面的資料較少,所以自己來總結(jié)下,這篇文章主要給大家介紹了關(guān)于Spring Boot應(yīng)用的極速部署腳本的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-08-08
  • Java實(shí)現(xiàn)帶圖形界面的聊天程序

    Java實(shí)現(xiàn)帶圖形界面的聊天程序

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)帶圖形界面的聊天程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • SpringBoot線程池配置使用示例詳解

    SpringBoot線程池配置使用示例詳解

    Spring?Boot集成@Async注解,支持線程池參數(shù)配置(核心數(shù)、隊(duì)列容量、拒絕策略等)及生命周期管理,結(jié)合監(jiān)控與任務(wù)裝飾器,提升異步處理效率與系統(tǒng)穩(wěn)定性,本文給大家介紹SpringBoot線程池配置使用示例詳解,感興趣的朋友一起看看吧
    2025-07-07
  • 基于Java的電梯系統(tǒng)實(shí)現(xiàn)過程

    基于Java的電梯系統(tǒng)實(shí)現(xiàn)過程

    這篇文章主要介紹了基于Java的電梯系統(tǒng)實(shí)現(xiàn)過程,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • SpringBoot+Vue實(shí)現(xiàn)EasyPOI導(dǎo)入導(dǎo)出的方法詳解

    SpringBoot+Vue實(shí)現(xiàn)EasyPOI導(dǎo)入導(dǎo)出的方法詳解

    項(xiàng)目開發(fā)過程中,很大的需求都有 導(dǎo)入導(dǎo)出功能。本文將利用SpringBoot+Vue實(shí)現(xiàn)EasyPOI導(dǎo)入導(dǎo)出功能,感興趣的可以了解一下
    2022-08-08
  • Java數(shù)據(jù)封裝樹形結(jié)構(gòu)代碼實(shí)例

    Java數(shù)據(jù)封裝樹形結(jié)構(gòu)代碼實(shí)例

    這篇文章主要介紹了Java數(shù)據(jù)封裝樹形結(jié)構(gòu)代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01

最新評(píng)論

长垣县| 纳雍县| 临澧县| 池州市| 厦门市| 冀州市| 阿尔山市| 德州市| 肃宁县| 石家庄市| 新泰市| 东山县| 太白县| 称多县| 米易县| 湛江市| 丘北县| 兴城市| 三明市| 海南省| 中方县| 涞水县| 饶阳县| 兴海县| 阿荣旗| 景宁| 乌拉特后旗| 金湖县| 闸北区| 花垣县| 镇远县| 石台县| 民勤县| 嘉禾县| 渝中区| 阳泉市| 若羌县| 临邑县| 孟津县| 辽阳县| 新巴尔虎右旗|