@Autowired
private DataSourceTransactionManager transactionManager;
@Transactional
public boolean checkout() {
DefaultTransactionDefinition definition = new DefaultTransactionDefinition();
// 设置事务名称
definition.setName("MyTx");
/**
* 设置事务传播特性(目前为PROPAGATION_REQUIRED:如果当前存在一个事务,则加入当前事务。如果不
* 存在任何事务,则创建一个新的事务。总之,要至少保证在一个事务中运行。)
*/
definition.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
// 开启事务
TransactionStatus transactionStatus = transactionManager.getTransaction(definition);
try {
// todo 执行内容。。。
// 手动提交事务
transactionManager.commit(transactionStatus);
return true;
} catch (Exception ex) {
// 手动回滚事务
transactionManager.rollback(transactionStatus);
logger.error("error", ex);
throw ex;
}
}
DefaultTransactionDefinition:显示声明事物
最新推荐文章于 2023-08-31 09:44:38 发布
本文介绍如何使用Spring框架的手动事务管理方法,通过设置事务名称、传播行为等属性,实现对业务逻辑的精确控制。
2400

被折叠的 条评论
为什么被折叠?



