快速业务通道

Spring源代码解析(六):Spring声明式事务处理 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
    txAttr = new DelegatingTransactionAttribute(txAttr) {          public String getName() {            return joinpointIdentification;          }        };      }      TransactionStatus status = null;      if (txAttr != null) {      //这里使用了我们定义好的事务配置信息,有事务管理器来创建事务,同时返 回TransactionInfo        status = getTransactionManager().getTransaction(txAttr);      }      return prepareTransactionInfo(txAttr, joinpointIdentification, status);    }

Spring源代码解析(六):Spring声明式事务处理(5)

时间:2011-03-29 javaeye jiwenke

首先通过TransactionManager得到需要的事务,事务的创建根据我们定义的事务配置 决定,在 AbstractTransactionManager中给出一个标准的创建过程,当然创建什么样的 事务还是需要具体的 PlatformTransactionManager来决定,但这里给出了创建事务的模 板:

Java代码

public final TransactionStatus getTransaction(TransactionDefinition definition) throws TransactionException {      Object transaction = doGetTransaction();      ......      if (definition == null) {        //如果事务信息没有被配置,我们使用Spring默认的配置方式        definition = new DefaultTransactionDefinition();      }      if (isExistingTransaction(transaction)) {        // Existing transaction found -> check propagation behavior to find out how to behave.        return handleExistingTransaction(definition, transaction, debugEnabled);      }      // Check definition settings for new transaction.      //下面就是使用配置信息来创建我们需要的事务;比如传播属性和同步属性等      //最后把创建过程中的信息收集起来放到TransactionStatus中返回;       if (definition.getTimeout() < TransactionDefinition.TIMEOUT_DEFAULT) {        throw new InvalidTimeoutException("Invalid transaction timeout", definition.getTimeout());      }      // No existing transaction found -> check propagation behavior to find out how to behave.      if (definition.getPropagationBehavior() == TransactionDefinition.PROPAGATION_MANDATORY) {        throw new IllegalTransactionStateException(            "Transaction propagation ''mandatory'' but no existing transaction found");      }      else if (definition.getPropagationBehavior() == TransactionDefinition.PROPAGATION_REQUIRED ||          definition.getPropagationBehavior() == TransactionDefinition.PROPAGATION_REQUIRES_NEW ||        definition.getPropagationBehavior() == TransactionDefinition.PROPAGATION_NESTED) {        //这里是事务管理器创建事务的地方,并将创建过程中得到的信息放到 TransactionStatus中去,包括创建出来的事务        doBegin(transaction, definition);        boolean newSynchronization = (getTransactionSynchronization() != SYNCHRONIZATION_NEVER);        return newTransactionStatus(definition, transaction, true, newSynchronization, debugEnabled, null);      }      else {       

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号