gpt4 book ai didi

spring - 从 Controller 发出的多个事务调用

转载 作者:行者123 更新时间:2023-12-02 14:46:07 25 4
gpt4 key购买 nike

我有一种情况,假设我有两项服务

AccountService 
CustomerService

两者都用 @Transactional 和一些 createXXX() 方法进行注释。

现在,从我的 AccountController 可以说,我有一个方法,我首先调用 createAccount() ,一旦我从 createAccount() 取回帐户 ID, ) 然后我可以调用 createCustomer() (创建客户并更新 客户 上的 Account 的 Account-ID)

如果由于某种原因 createCustomer() 失败,我将处于污染状态,其中 Account 已被保留,但没有创建 Customer .

我应该使用 TransactionSynchronizationManager 解决这个问题还是应该如何处理这种情况?

最佳答案

默认情况下,Spring 事务使用需要传播级别(请参阅 org.springframework.transaction.annotation.Transactional#propagation)。这意味着,除非存在现有事务,否则 Spring 不会创建新事务。使用此功能:您可以使用 @Transactional 注释 Controller 的方法,也可以创建一个将触发顶级事务的新服务。这个想法是,一旦您创建了一个事务,服务调用就不会创建新的事务。因此,您只有一个事务可以成功提交,也可以失败。

关于spring - 从 Controller 发出的多个事务调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50944483/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com