1. 步骤
- 注入PlatformTransactionManager
@Autowired
PlatformTransactionManager transactionManager;
- 手动开启事务
DefaultTransactionDefinition definition = new DefaultTransactionDefinition();
definition.setPropagationBehaviorName("PROPAGATION_REQUIRED");
TransactionStatus transaction = transactionManager.getTransaction(definition);
- 事务回滚和提交
try {
task.run()
transactionManager.commit(transaction);
} catch (Exception ex) {
ex.printStackTrace();
log.error("异步保存任务出错:{}", ex);
transactionManager.rollback(transaction);
}
2. 代码示例
new Thread(() -> {
DefaultTransactionDefinition definition = new DefaultTransactionDefinition();
definition.setPropagationBehaviorName("PROPAGATION_REQUIRED");
TransactionStatus transaction = transactionManager.getTransaction(definition);
try {
task.run();
transactionManager.commit(transaction);
} catch (Exception ex) {
ex.printStackTrace();
log.error("异步保存任务出错:{}", ex);
transactionManager.rollback(transaction);
} finally {
}
}).start();