zoukankan      html  css  js  c++  java
  • Spring Transaction属性之Propagation

    配置文件如下:

    <!-- 事务通知 -->
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
    <tx:attributes>
    <tx:method name="save*" propagation="REQUIRED" />
    <tx:method name="saveOrUpdate*" propagation="REQUIRES_NEW" />
    <tx:method name="delete*" propagation="REQUIRED" />
    <tx:method name="update*" propagation="REQUIRED" />
    <tx:method name="upload*" propagation="REQUIRED" />
    <tx:method name="merge*" propagation="REQUIRED" />
    <tx:method name="refresh*" propagation="REQUIRED" />

    <tx:method name="*Save" propagation="REQUIRED" />
    <tx:method name="SaveOrUpdate*" propagation="REQUIRES_NEW" />
    <tx:method name="*Delete" propagation="REQUIRED" />
    <tx:method name="*Update" propagation="REQUIRED" />
    <tx:method name="*Merge" propagation="REQUIRED" />
    <tx:method name="Refresh*" propagation="REQUIRED" />
    <tx:method name="*" read-only="true" propagation="NOT_SUPPORTED" />
    </tx:attributes>
    </tx:advice>

    <aop:config>
    <aop:pointcut id="txManger" expression="execution (* com.sc.service..*.*(..))" />
    <aop:advisor advice-ref="txAdvice" pointcut-ref="txManger" />
    </aop:config>

    propagation属性有以下几个值:

    MANDATORY:必须在有transaction状态下执行,如果当前没有transaction,则抛出异常IllegalTransactionStateException。

    NESTED:如果没有已定义的Transaction,当前方法新开一个Transaction并在该Transaction中运行。如果存在已定义的Transaction,当前方法在嵌套事务(Nested       Transaction)中运行 — 嵌套事务中可以定义储存点,因此可以独立于外部的Transaction而进行rollback。

    NEVER:在无transaction状态下执行;如果当前已有transaction,则抛出异常IllegalTransactionStateException。

    NOT_SUPPORTED:在无transaction状态下执行;如果当前已有transaction,则将当前transaction挂起。

    REQUIRED(默认值):在有transaction状态下执行;如当前没有transaction,则创建新的transaction。

    REQUIRES_NEW:创建新的transaction并执行;如果当前已有transaction,则将当前transaction挂起。

    SUPPORTS:如当前有transaction,则在transaction状态下执行;如果当前没有transaction,在无transaction状态下执行。

  • 相关阅读:
    2021年中央经济工作会议
    大人物不走直线路径
    批量修改:update inner join导致死锁
    linux 系统centos新添加一个硬盘,分区格式化挂载操作
    vuewaves点击容器出现水波纹效果
    多维表头的DataGridView
    TypeError: Property value expected type of string but got null
    linux下添加简单的开机自启动脚本
    Centos7 自定义 tomcat 的 systemctl 启动脚本
    uniapp的store使用
  • 原文地址:https://www.cnblogs.com/zhncnblogs/p/6645666.html
Copyright © 2011-2022 走看看