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

當(dāng)事務(wù)Transactional遇見(jiàn)異步線程出現(xiàn)的坑及解決

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

問(wè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);
    //注冊(cè)成功消息推送
    executor.execute(() -> pushRegisterMessage(user));
}

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

解決方案

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

2.去掉事務(wù)

拓展

@Transactional注解屬性就是來(lái)控制事務(wù)屬性的。通過(guò)這些屬性來(lái)生成事務(wù)。

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

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

默認(rèn)情況下,只有來(lái)自外部的方法調(diào)用才會(huì)被AOP代理捕獲,也就是,類內(nèi)部方法調(diào)用本類內(nèi)部的其他方法并不會(huì)引起事務(wù)行為,即使被調(diào)用方法使用

@Transactional的函數(shù)調(diào)用有@Transactional的函數(shù)的時(shí)候,進(jìn)入第二個(gè)函數(shù)的時(shí)候是新的事務(wù),還是沿用之前的事務(wù)。

稍不注意就會(huì)拋UnexpectedRollbackException異常。

總結(jié)

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

相關(guān)文章

  • Hikari連接池使用SpringBoot配置JMX監(jiān)控實(shí)現(xiàn)

    Hikari連接池使用SpringBoot配置JMX監(jiān)控實(shí)現(xiàn)

    Hikari是Spring Boot默認(rèn)的數(shù)據(jù)庫(kù)連接池。區(qū)別于C3P0直接通過(guò)連接池對(duì)象獲取各項(xiàng)狀態(tài)指標(biāo),Hikari需要通過(guò)JMX來(lái)獲取。本文就詳細(xì)的來(lái)介紹一下,感興趣的可以了解一下
    2021-07-07
  • Java分頁(yè)工具類及其使用(示例分享)

    Java分頁(yè)工具類及其使用(示例分享)

    本篇文章主要分享了Java分頁(yè)工具類及其使用的示例代碼,具有一定的參考價(jià)值,下面跟著小編一起來(lái)看下吧
    2017-01-01
  • 詳解Mybatis的分頁(yè)插件

    詳解Mybatis的分頁(yè)插件

    這篇文章主要介紹了詳解Mybatis的分頁(yè)插件,在 Mybatis中,如何對(duì)數(shù)據(jù)進(jìn)行分頁(yè)是一個(gè)非常常見(jiàn)的問(wèn)題,現(xiàn)在,我們可以通過(guò)使用 Mybatis 的分頁(yè)插件來(lái)實(shí)現(xiàn)對(duì)數(shù)據(jù)的分頁(yè),需要的朋友可以參考下
    2023-05-05
  • 淺談Java中BigDecimal類的簡(jiǎn)單應(yīng)用

    淺談Java中BigDecimal類的簡(jiǎn)單應(yīng)用

    這篇文章主要介紹了淺談Java中BigDecimal類的簡(jiǎn)單應(yīng)用,BigDecimal是由任意精度的整數(shù)非標(biāo)度值和32位的整數(shù)標(biāo)度組成,如果為零或正數(shù),則標(biāo)度是小數(shù)點(diǎn)后的位數(shù),如果為負(fù)數(shù),則將該數(shù)的非標(biāo)度值乘以?10的負(fù)scale次冪,需要的朋友可以參考下
    2023-07-07
  • Java初學(xué)者問(wèn)題圖解(動(dòng)力節(jié)點(diǎn)Java學(xué)院整理)

    Java初學(xué)者問(wèn)題圖解(動(dòng)力節(jié)點(diǎn)Java學(xué)院整理)

    本文通過(guò)圖文并茂的形式給大家介紹了java初學(xué)者問(wèn)題,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下
    2017-04-04
  • springboot時(shí)間格式化的五種方法總結(jié)(解決后端傳給前端的時(shí)間顯示不一致)

    springboot時(shí)間格式化的五種方法總結(jié)(解決后端傳給前端的時(shí)間顯示不一致)

    這篇文章主要給大家介紹了關(guān)于springboot時(shí)間格式化的五種方法,文中介紹的方法解決了后端傳給前端的時(shí)間顯示不一致,文中通過(guò)圖文以及代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • SpringBoot生產(chǎn)環(huán)境打包如何去除無(wú)用依賴

    SpringBoot生產(chǎn)環(huán)境打包如何去除無(wú)用依賴

    這篇文章主要介紹了SpringBoot生產(chǎn)環(huán)境打包如何去除無(wú)用依賴問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • IDEA使用proxy ai集合deepseek教程

    IDEA使用proxy ai集合deepseek教程

    用戶更新IDEA至2024.3,安裝配置proxyai插件,通過(guò)硅基流動(dòng)平臺(tái)注冊(cè)獲取免費(fèi)API配額,并設(shè)置模型參數(shù),最終完成工具配置使用
    2025-07-07
  • SpringBoot+MybatisPlus+Mysql+Sharding-JDBC分庫(kù)分表

    SpringBoot+MybatisPlus+Mysql+Sharding-JDBC分庫(kù)分表

    本文主要介紹了SpringBoot+MybatisPlus+Mysql+Sharding-JDBC分庫(kù)分表,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Java生成CSV文件實(shí)例詳解

    Java生成CSV文件實(shí)例詳解

    這篇文章主要介紹了Java生成CSV文件的方法,很實(shí)用的功能,需要的朋友可以參考下
    2014-07-07

最新評(píng)論

高密市| 涞水县| 台前县| 牙克石市| 赤水市| 五台县| 铁力市| 库尔勒市| 岱山县| 双牌县| 昭觉县| 汕头市| 耿马| 杭锦旗| 黄平县| 个旧市| 庄浪县| 武威市| 怀安县| 贡觉县| 长兴县| 临朐县| 绥棱县| 砀山县| 桐柏县| 丰顺县| 平和县| 蕲春县| 阿拉尔市| 天峨县| 广汉市| 五指山市| 黎川县| 于都县| 石柱| 衡阳县| 平乡县| 东源县| 呼和浩特市| 莲花县| 屯昌县|