springboot的事务

作者: 简书徐小耳 | 来源:发表于2019-01-09 13:30 被阅读125次

    个人公众号(徐小耳博客)对于springboot,spring,tomcat,netty等框架有更深入的理解,请移步关注

    image.png

    spring事务的原理:
    通过给spring设置@Transactional注解
    该注解为让spring为当前类生成一个代理对象
    spring会给该对象增加一个TransactionInterceptor拦截器
    该方法最终会调用TransactionAspectSupport的invokeWithinTransaction方法
    方法有三个参数Method method, Class<?> targetClass, final InvocationCallback invocation
    method和targetClass都是原始类的,而invocation则是属于ReflectiveMethodInvocation,该类是专门负责处理aop调用链的

    该类首先是获取TransactionAttribute,主要是包含事务管理器,传播属性和隔离级别

    再然后获取到joinpointIdentification,一般是我们的方法名称

    然后根据上述的方式开始创建事务,执行一长串方法 比如有完善事务,finally有清除事务信息,最终有提交事务

    同时我们也注意到其在开启事务的时候通过threadlocal存储我们的每个事务线程的ConnectionHolder
    这个里面存放connection
    所以spring的事务是不好传播到另外一个线程

    相关文章

      网友评论

        本文标题:springboot的事务

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