zoukankan      html  css  js  c++  java
  • spring源码相关第五篇----------------------------spring tx实现原理源码解读

    事务执行时通过创建一个aop代理对象,加上一些拦截器执行链实现的。

     此为事务配置相关的重要信息

     而使用的data是spring jdbc提供的,这里也可以配置成druid,c3p0等等数据库连接池。

     如图所示,如果有aop参与的类,将会创建的bean对象是一个代理对象,而如果没有aop参与的创建的bean对象直接就是MyServiceImpl的实例对象

    ---------------------注意这里创建一个MyServiceImpl的代理对象操作,之后将这里代理对象放入到对应的bean缓存中,到此spring事务相关的代理对象创建完毕,下面开始spring事务调用讲解

     最终调用的时候,会走到这个方法里面,实现对于事务的处理操作,完成整个事务的处理过程。

    在方法执行之前执行aop前置通知方法

    如果没有后置将会走到这个方法,详细请看aop实现原理相关博客

    最终会走到我们的事务处理的相关方法,这里会完成事务的提交与回滚操作,以及事务隔离级别,spring的事务传播行为的操作,实现spring事务的功能。

    附加信息(下面为spring事务处理大致流程图)

    到此spring 事务相关原理解析完毕

    相关博客参考

    https://my.oschina.net/mengyuankan/blog/3003783   讲spring事务隔离别与传播行为源码相关,较为详细

    https://www.cnblogs.com/rouqinglangzi/p/12764926.html 讲spring事务大致原理

  • 相关阅读:
    pytest文档19-pytest分布式执行(pytest-xdist)
    pytest文档18-配置文件pytest.ini
    pytest文档17-fixture之autouse=True
    pytest文档16-用例a失败,跳过测试用例b和c并标记失败xfail
    pytest文档15-使用自定义标记mark
    pytest文档14-函数传参和fixture传参数request
    pytest文档12-skip跳过用例
    pytest文档11-assert断言
    创建express项目
    docker安装脚本
  • 原文地址:https://www.cnblogs.com/chaojibaidu/p/14984478.html
Copyright © 2011-2022 走看看