spring boot手動提交事務

spring boot手動提交事務

import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.support.DefaultTransactionDefinition;

@Autowired
private DataSourceTransactionManager txManager;

/**
 * 測試事務
 */
private void testTransaction() {
	DefaultTransactionDefinition def = new DefaultTransactionDefinition();
	def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
	TransactionStatus status = txManager.getTransaction(def);
	try {
		system.out.println("處理正常業務")
		txManager.commit(status);
	} catch (Exception e) {
		LOGGER.error("testTransaction fail:{}",e);
		txManager.rollback(status);
	}
}

手動提交事務的運用場景:異步處理業務時,此時業務的事務已經脫離正常的aop機制了,所以需要手動提交事務,來保持業務中多個事務的一致性。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章