本人在springboot项目开发中,涉及到调用第三方接口,请求第三方接口成功但返回相关交易失败的话,需要删除插入表的某条数据,或更新别表中的表状态同时记录日志等,将第三方请求的实际完成情况返回给前端,使用@Transactional注解不能满足我的需求,在某博客(忘记了)看到了该编程式事务,用起来还不错。
代码如下:
import org.springframework.transaction.PlatformTransactionManager; import org.springframework.transaction.TransactionStatus; import org.springframework.transaction.support.DefaultTransactionDefinition;
注入事务管理器对象:
@Autowired private PlatformTransactionManager txManager;
开启事务:
TransactionStatus status = txManager.getTransaction(new DefaultTransactionDefinition());
提交:
txManager.commit(status);
回滚:
txManager.rollback(status);