1.同步線程
@Autowired
DataSourceTransactionManager dataSourceTransactionManager;
@Autowired
TransactionDefinition transactionDefinition;
//開啓事務
TransactionStatus transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition);
try{
//提交事務
dataSourceTransactionManager.commit(transactionStatus);
}catch (Exception e){
log.error("異常:{}",e);
//回滾事務
dataSourceTransactionManager.rollback(transactionStatus);
}
2.異步線程
//spring線程池
@Autowired
private ThreadPoolTaskExecutor taskExecutor;
@Autowired
private PlatformTransactionManager platformTransactionManager;
@Autowired
private TransactionDefinition transactionDefinition;
//執行異步任務
taskExecutor.execute(new Runnable() {
@Override
public void run() {
TransactionStatus transactionStatus = platformTransactionManager.getTransaction(transactionDefinition);
try{
platformTransactionManager.commit(transactionStatus);
}catch (Exception e){
log.error("異常:{}",e);
platformTransactionManager.rollback(transactionStatus);
}
}
});