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機制了,所以需要手動提交事務,來保持業務中多個事務的一致性。