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

springboot手動事務(wù)回滾的實現(xiàn)代碼

 更新時間:2020年07月24日 10:32:07   投稿:mrr  
這篇文章主要介紹了springboot手動事務(wù)回滾的實現(xiàn)方法,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

親測在使用@Transactional、@Transactional(rollbackFor = Exception.class)及catch異常之后 throw new RuntimeException();仍然不能解決線程中的事務(wù)回滾。下面使用線程所機制,進(jìn)行整體的事務(wù)提交及事務(wù)回滾,代碼如下:

在springboot啟動類上加  @EnableTransactionManagement  注解

線程類中添加以下代碼

@Autowired
  private PlatformTransactionManager platformTransactionManager;
  @Autowired
  private TransactionDefinition transactionDefinition;
  private Lock lock = new ReentrantLock();
  // todo 業(yè)務(wù)處理方法 數(shù)據(jù)存儲異常 手動進(jìn)行回滾
  public void saveMsg(String message) throws Exception {
    lock.lock();
    TransactionStatus transaction = platformTransactionManager.getTransaction(transactionDefinition);
    try {
    	//todo 具體業(yè)務(wù),對數(shù)據(jù)庫的操作 start
    	test1Service.save(test1);
    	test2Service.save(test2);
    	//end
    	
      platformTransactionManager.commit(transaction);
    } catch (Exception e) {
      platformTransactionManager.rollback(transaction);
      e.printStackTrace();
    } finally {
      lock.unlock();
    }
  }

注:如果無法用 @Autowired 程序啟動進(jìn)行對象創(chuàng)建,可以使用init靜態(tài)注入,如果對象可以正常創(chuàng)建,下面代碼可以忽略。

@Autowired
  private static PlatformTransactionManager platformTransactionManager;
  @Autowired
  private static TransactionDefinition transactionDefinition;

  @Autowired
  public void init(PlatformTransactionManager platformTransactionManager,TransactionDefinition transactionDefinition
  ) {
    DriverAlfaServerHandler.platformTransactionManager = platformTransactionManager;
    DriverAlfaServerHandler.transactionDefinition = transactionDefinition;
  }

此回滾方法親測有效。

到此這篇關(guān)于springboot手動事務(wù)回滾的實現(xiàn)代碼的文章就介紹到這了,更多相關(guān)springboot 事務(wù)回滾內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • springboot項目啟動的時候,運行main方法報錯NoClassDefFoundError問題

    springboot項目啟動的時候,運行main方法報錯NoClassDefFoundError問題

    這篇文章主要介紹了springboot項目啟動的時候,運行main方法報錯NoClassDefFoundError問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • 關(guān)于IDEA 2020使用 mybatis-log-plugin插件的問題

    關(guān)于IDEA 2020使用 mybatis-log-plugin插件的問題

    這篇文章主要介紹了關(guān)于IDEA 2020使用 mybatis-log-plugin插件的問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • SpringMVC使用MultipartFile實現(xiàn)文件上傳

    SpringMVC使用MultipartFile實現(xiàn)文件上傳

    這篇文章主要為大家詳細(xì)介紹了SpringMVC使用MultipartFile實現(xiàn)文件上傳功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • RocketMQ實現(xiàn)隨緣分BUG小功能示例詳解

    RocketMQ實現(xiàn)隨緣分BUG小功能示例詳解

    這篇文章主要為大家介紹了RocketMQ實現(xiàn)隨緣分BUG小功能示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • 詳解Java匿名內(nèi)部類

    詳解Java匿名內(nèi)部類

    這篇文章介紹了Java匿名內(nèi)部類的實現(xiàn),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-12-12
  • MyBatis?多表聯(lián)合查詢及優(yōu)化方法

    MyBatis?多表聯(lián)合查詢及優(yōu)化方法

    大家都知道Hibernate 是全自動的數(shù)據(jù)庫持久層框架,它可以通過實體來映射數(shù)據(jù)庫,通過設(shè)置一對多、多對一、一對一、多對多的關(guān)聯(lián)來實現(xiàn)聯(lián)合查詢,接下來通過本文給大家介紹MyBatis?多表聯(lián)合查詢及優(yōu)化,需要的朋友可以參考下
    2022-08-08
  • SpringBoot如何優(yōu)雅的處理重復(fù)請求

    SpringBoot如何優(yōu)雅的處理重復(fù)請求

    對于一些用戶請求,在某些情況下是可能重復(fù)發(fā)送的,如果是查詢類操作并無大礙,但其中有些是涉及寫入操作的,一旦重復(fù)了,可能會導(dǎo)致很嚴(yán)重的后果,所以本文給大家介紹了SpringBoot優(yōu)雅的處理重復(fù)請求的方法,需要的朋友可以參考下
    2023-12-12
  • Spring實戰(zhàn)之搜索Bean類操作示例

    Spring實戰(zhàn)之搜索Bean類操作示例

    這篇文章主要介紹了Spring實戰(zhàn)之搜索Bean類操作,結(jié)合實例形式分析了Spring搜索Bean類的相關(guān)配置、接口實現(xiàn)與操作技巧,需要的朋友可以參考下
    2019-12-12
  • SpringBoot如何使用TestEntityManager進(jìn)行JPA集成測試

    SpringBoot如何使用TestEntityManager進(jìn)行JPA集成測試

    TestEntityManager是Spring Framework提供的一個測試框架,它可以幫助我們進(jìn)行 JPA 集成測試,在本文中,我們將介紹如何使用 TestEntityManager 進(jìn)行 JPA 集成測試,感興趣的跟著小編一起來學(xué)習(xí)吧
    2023-06-06
  • java數(shù)組遍歷 刪除remove(示例代碼)

    java數(shù)組遍歷 刪除remove(示例代碼)

    java數(shù)組遍歷 刪除remove。需要的朋友可以過來參考下,希望對大家有所幫助
    2013-10-10

最新評論