Spring Boot 事务回滚:使用 TransactionStatus 手动管理事务
"Spring Boot 事务回滚:使用 TransactionStatus 手动管理事务"\n\n本文介绍如何在 Spring Boot 中使用 dataSourceTransactionManager.getTransaction(defaultTransactionDefinition) 方式创建的事务,并使用 TransactionStatus 对象进行手动回滚操作。\n\n要回滚通过 dataSourceTransactionManager.getTransaction(defaultTransactionDefinition) 方式创建的事务,可以使用 status.setRollbackOnly() 方法将事务标记为回滚状态,然后通过 dataSourceTransactionManager.rollback(status) 方法来执行回滚操作。\n\n下面是一个示例代码:\n\njava\nimport org.springframework.transaction.TransactionDefinition;\nimport org.springframework.transaction.TransactionStatus;\nimport org.springframework.transaction.support.DefaultTransactionDefinition;\n\n// 创建事务定义\nDefaultTransactionDefinition defaultTransactionDefinition = new DefaultTransactionDefinition();\ndefaultTransactionDefinition.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);\n\n// 开启事务\nTransactionStatus status = dataSourceTransactionManager.getTransaction(defaultTransactionDefinition);\n\ntry {\n // 执行业务代码\n \n // 如果需要回滚,设置事务回滚标记\n status.setRollbackOnly();\n \n // 提交事务\n dataSourceTransactionManager.commit(status);\n} catch (Exception e) {\n // 发生异常,回滚事务\n dataSourceTransactionManager.rollback(status);\n throw e;\n}\n\n\n在上面的代码中,如果需要回滚事务,可以在业务代码中调用 status.setRollbackOnly() 方法将事务标记为回滚状态。然后在 catch 块中调用 dataSourceTransactionManager.rollback(status) 方法来执行回滚操作。如果没有调用 status.setRollbackOnly() 方法,事务将会提交。
原文地址: https://www.cveoy.top/t/topic/qg7M 著作权归作者所有。请勿转载和采集!