我有一种情况,可以说我有两项服务
AccountService
CustomerService
Run Code Online (Sandbox Code Playgroud)
两者都@Transactional用一些createXXX()方法进行了注释。
现在,我AccountController可以说我有一个方法,我将首先调用createAccount(),一旦我从那里取回 Account-ID,createAccount()我就可以调用createCustomer()(创建一个客户并从Account上更新 Account-ID Customer)
如果由于某种原因createCustomer()失败,我将留下一个Account已被持久化但未Customer创建的污染状态。
我应该用TransactionSynchronizationManagerOR 来解决这个问题,我应该如何处理这种情况?
默认情况下,Spring 事务使用需要传播级别(请参阅 org.springframework.transaction.annotation.Transactional#propagation)。这意味着,除非存在现有事务,否则 Spring 不会创建新事务。使用此功能:您可以使用注释控制器的方法,@Transactional也可以创建一个将触发顶级事务的新服务。这个想法是,一旦您创建了一个事务,服务调用就不会创建新的事务。因此,您只有一个事务可以成功提交,也可以失败。
| 归档时间: |
|
| 查看次数: |
553 次 |
| 最近记录: |