欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

當事務Transactional遇見異步線程出現(xiàn)的坑及解決

 更新時間:2023年12月02日 08:40:58   作者:三省同學  
這篇文章主要介紹了當事務Transactional遇見異步線程出現(xiàn)的坑及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

問題

開發(fā)小伙伴遇到線上環(huán)境消息推送不成功,排查日志發(fā)現(xiàn)推送是id為null

代碼示例

@Transactional(rollbackFor = Exception.class)
public void register(UserDTO dto) {
    User user = BeanCopyUtils.copyBean(dto, User.class);
    insert(user);
    //注冊成功消息推送
    executor.execute(() -> pushRegisterMessage(user));
}

通過代碼分析,按照程序代碼執(zhí)行,插入用戶能產(chǎn)生數(shù)據(jù),但推送id為空,就是事務執(zhí)行完成是,多線程已經(jīng)執(zhí)行。

解決方案

1.多線程延時執(zhí)行,等事務執(zhí)行完成。

2.去掉事務

拓展

@Transactional注解屬性就是來控制事務屬性的。通過這些屬性來生成事務。

@Transactional注解在外部調用的函數(shù)上才有效果,內部調用的函數(shù)添加無效。這是由AOP的特性決定的。

如果你在protected、private 或者默認可見性的方法上使用 @Transactional 注解,這將被忽略,也不會拋出任何異常。

默認情況下,只有來自外部的方法調用才會被AOP代理捕獲,也就是,類內部方法調用本類內部的其他方法并不會引起事務行為,即使被調用方法使用

@Transactional的函數(shù)調用有@Transactional的函數(shù)的時候,進入第二個函數(shù)的時候是新的事務,還是沿用之前的事務。

稍不注意就會拋UnexpectedRollbackException異常。

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Servlet關于RequestDispatcher的原理詳解

    Servlet關于RequestDispatcher的原理詳解

    這篇文章主要介紹了Servlet關于RequestDispatcher的原理詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11
  • Python如何使用@property @x.setter及@x.deleter

    Python如何使用@property @x.setter及@x.deleter

    這篇文章主要介紹了Python如何使用@property @x.setter及@x.deleter,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-05-05
  • javafx 如何將項目打包為 Windows 的可執(zhí)行文件exe

    javafx 如何將項目打包為 Windows 的可執(zhí)行文件exe

    文章介紹了三種將JavaFX項目打包為.exe文件的方法:方法1使用jpackage(適用于JDK14及以上版本),方法2使用Launch4j(適用于所有JDK版本),方法3使用InnoSetup(用于創(chuàng)建安裝包),每種方法都有其特點和適用范圍,可以根據(jù)項目需求選擇合適的方法,感興趣的朋友一起看看吧
    2025-01-01
  • java的Builder原理和實現(xiàn)詳解

    java的Builder原理和實現(xiàn)詳解

    大家好,本篇文章主要講的是java的Builder原理和實現(xiàn)詳解,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • 詳解java如何集成swagger組件

    詳解java如何集成swagger組件

    今天給大家?guī)淼氖顷P于Java的相關知識,文章圍繞著java如何集成swagger組件展開,文中有非常詳細的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • Spring多定時任務@Scheduled執(zhí)行阻塞問題解決

    Spring多定時任務@Scheduled執(zhí)行阻塞問題解決

    這篇文章主要介紹了Spring多定時任務@Scheduled執(zhí)行阻塞問題解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-05-05
  • springboot使用Mybatis-plus分頁插件的案例詳解

    springboot使用Mybatis-plus分頁插件的案例詳解

    這篇文章主要介紹了springboot使用Mybatis-plus分頁插件的相關知識,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-05-05
  • 我賭你不清楚Spring中關于Null的這些事

    我賭你不清楚Spring中關于Null的這些事

    這篇文章主要介紹了我賭你不清楚Spring中關于Null的這些事,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-06-06
  • java中Pulsar?InterruptedException?異常

    java中Pulsar?InterruptedException?異常

    這篇文章主要為大家介紹了java中Pulsar?InterruptedException?異常分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02
  • Java中Prime算法的原理與實現(xiàn)詳解

    Java中Prime算法的原理與實現(xiàn)詳解

    Prime算法是一種窮舉查找算法來從一個連通圖中構造一棵最小生成樹。本文主要為大家介紹了Java中Prime算法的原理與實現(xiàn),感興趣的可以學習一下
    2022-07-07

最新評論