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机制了,所以需要手动提交事务,来保持业务中多个事务的一致性。