如何跟踪spring中的事务结果?

如何跟踪spring中的事务结果?,spring,transactions,Spring,Transactions,你可以想象我有一些服务,比如说金钱服务。还假设我有一个方法,可以执行实际的传输(我知道这是一个非常普通的例子)。如果交易成功结束,我必须返回true,如果交易失败,我必须返回false。所以,这里是我实际上没有掌握的想法——我如何在Spring框架中跟踪事务的结果?(甚至可能只是为了简单的日志记录目的)下面给出了我的传输方法的示例。谢谢你的帮助 @Transactional public boolean transferMoneyFromOneAccountToAnother(Money

你可以想象我有一些服务,比如说金钱服务。还假设我有一个方法,可以执行实际的传输(我知道这是一个非常普通的例子)。如果交易成功结束,我必须返回true,如果交易失败,我必须返回false。所以,这里是我实际上没有掌握的想法——我如何在Spring框架中跟踪事务的结果?(甚至可能只是为了简单的日志记录目的)下面给出了我的传输方法的示例。谢谢你的帮助

@Transactional
    public boolean transferMoneyFromOneAccountToAnother(MoneyTransferForm moneyTransferForm) {
        final UserBankAccount sourceBankAccount = bankAccountRepository.findBankAccountByIdentifier(
                moneyTransferForm.getSourceAccountIdentifier()
        );
        final UserBankAccount targetBankAccount = bankAccountRepository.findBankAccountByIdentifier(
                moneyTransferForm.getTargetAccountIdentifier()
        );
        subtractMoneyFromSourceAccount(moneyTransferForm, sourceBankAccount);
        appendMoneyToTargetAccount(moneyTransferForm, targetBankAccount);
        bankAccountRepository.updateUserBankAccount(sourceBankAccount);
        bankAccountRepository.updateUserBankAccount(targetBankAccount);
    }

我可以想出两种方法:

  • 您可以简单地用try/catch块封装您的方法调用,如果没有异常,那么您的事务已成功提交

    try{
         transferMoneyFromOneAccountToAnother()
    
         logger.info("Transacton Done Successfully");
    
     }catch(Exception ex){
          //transaction failed
          logger.error("Transaction failed")
     }
    
  • 您可以有一个用@TransactionalEventListener注释并侦听自定义事件的方法。您可以查看以下链接以了解其工作原理: