@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:显示声明事物
最新推荐文章于 2025-02-09 23:37:32 发布