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状态下执行。

  • 相关阅读:
    CF446DDZY Loves Games【高斯消元,矩阵乘法】
    PHP操作MongoDB数据库
    PHP linux spl_autoload_register区分大小写
    win7 64位安装redis 及Redis Desktop Manager使用
    svn的搭建
    php 扩展 redis
    CI reids 缓存
    拿起键盘写下我的第一封博客
    自我介绍
    课程目标
  • 原文地址:https://www.cnblogs.com/zhncnblogs/p/6645666.html
Copyright © 2011-2022 走看看