美文网首页
Spring 声明式事务(二)——传播属性

Spring 声明式事务(二)——传播属性

作者: 莫那一鲁道 | 来源:发表于2018-05-14 02:12 被阅读116次

    前言

    众所周知,Spring 的事务属性众多,楼主今天将对 Spring 最常用的事务 —— 声明式事务,进行彻底的解释,包括楼主也写了很多的测试例子。代码地址: 使用 tk-mybatis 的 demo 测试了 Spring 的事务

    传播属性

    传播属性相对隔离属性,使用的较少,类型也较多。同时有些概念也必将繁杂,难以定义,楼主也是写了很多的测试代码,才得出一些结论。

    Spring 事务中有 7 个传播属性:

    1. PROPAGATION_REQUIRED
    2. PROPAGATION_SUPPORTS
    3. PROPAGATION_MANDATORY
    4. PROPAGATION_REQUIRES_NEW
    5. PROPAGATION_NOT_SUPPORTED
    6. PROPAGATION_NEVER
    7. PROPAGATION_NESTED

    一张表格搞定:

    这张表格是楼主测试了无数遍得来的,大家可以用楼主代码的例子跑跑看。

    总之,默认的 Required 足够使用了。所有事务的嵌套都符合定义。

    接口与接口之间的事务嵌套使用默认的不会影响业务逻辑。

    但注意,由于动态代理的特殊性,如果接口内部的事务方法嵌套,将会导致内层的事务失效,因为它已经不在 Spring 的管理范围之内了。

    当然,这张表格可能测的范围还不是百分百的足够,但已经可以理解传播的作用了。如果有兴趣,可以在例子中加入测试代码。

    相关文章

      网友评论

          本文标题:Spring 声明式事务(二)——传播属性

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