美文网首页
spring事务源码分析

spring事务源码分析

作者: StonyBlue | 来源:发表于2019-04-06 20:30 被阅读0次
/**
* 1.事务管理由 TransactionInterceptor 拦截,执行invoke
* 2.调用 TransactionAspectSupport#invokeWithinTransaction 实现环绕通知
* 3.getTransaction>>doGetTransaction>>isExistingTransaction{
* return handleExistingTransaction
* }
* 4.if>>[PROPAGATION_REQUIRED || PROPAGATION_REQUIRES_NEW || PROPAGATION_NESTED]{
* doBegin 在此将创建Connection,如果Connection 为新创建,绑定到TransactionSynchronizationManager#bindResource(DataSource, ConnectionHolder);
* prepareTransactionStatus
* return
* }
* 5.prepareTransactionStatus 将当前事务事务绑定到本地线程
* 如果第四步没有执行,Connection 将由 DataSourceUtils#doGetConnection 创建,绑定到TransactionSynchronizationManager#bindResource(DataSource, ConnectionHolder)
* 6.执行ReflectiveMethodInvocation#proceed 如果抛出异常执行completeTransactionAfterThrowing处理
* 7.cleanupTransactionInfo
* 8.commitTransactionAfterReturning>TransactionManager#commit
*
* Created by ShiHui on 2016/1/9.
*/
详细解释:
  • TransactionInterceptor- 是使用AOP实现声明式事务处理的拦截器,封装了Spring对声明式事务处理的实现。
  • TransactionAttributeSourceTransactionAttribute - 这里封装对声明式事务处理属性的识别,信息的读入和配置
  • TransactionInfoTransactionStatus - 这是事务处理信息存放的主要地方,而且是和线程绑定的。
  • 然后就是TransactionManager, 通过使用TransactionInfo和- -TransactionStatus来控制事务处理 - 中间的一些和具体事务处理器无关的操作封装到AbstractPlatformTransactionManager里面实现了。
  • 对编程式的事务处理TransactionDefinition是定义事务属性的类,Spring提供了DefaultTransactionDefinition供用户使用。
  • xml配置信息类NameMathTransactionAttribute
  • 注解信息类AnnotationTrancationAttributeSource

git仓库地址

相关文章

网友评论

      本文标题:spring事务源码分析

      本文链接:https://www.haomeiwen.com/subject/ywkdiqtx.html