Springboot手动提交事务

1.手动管理事务场景:

   事务的重要性,相信在实际开发过程中,都有很深的了解了。但是存在一个问题我们经常在开发的时候一般情况下都是用的注解的方式来进行事务的控制,说白了基于spring的7种事务控制方式来进行事务的之间的协调。 

  如果在没有办法使用注解的时候(比如多线程等),就要使用手动的方式来做事务管理了,这也就是编程式的事务管理。

2. 写法

1 在service内注入 这两个bean 
@Autowired
private PlatformTransactionManager platformTransactionManager;

@Autowired
private TransactionDefinition transactionDefinition;

2在 service方法内创建TransactionStatus
TransactionStatus transactionStatus = platformTransactionManager.getTransaction(transactionDefinition);
通过 platformTransactionManager.commit(transactionStatus); 提交事务
通过 platformTransactionManager.rollback(transactionStatus); 回滚事务 

示例代码: 

@Autowired
private PlatformTransactionManager platformTransactionManager;

@Autowired
private TransactionDefinition transactionDefinition;

public void b(){
    TransactionStatus transactionStatus = platformTransactionManager.getTransaction(transactionDefinition);

    UserIntegralInfo info = new UserIntegralInfo();
    info.setUserId(1L);
    info.setPoint(1);
    info.setOp("");
    info.setCurrIntegral(1);
    integralMapper.insert(info);
    platformTransactionManager.commit(transactionStatus);
    throw new RuntimeException();
}

 

posted @ 2022-07-27 23:21  许君闲乘悦  阅读(6838)  评论(0编辑  收藏  举报