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

  • 相关阅读:
    php 获取文件信息相关基础函数
    php常用基础数组函数
    php数组指针相关函数
    php 常用基础数学函数
    php 基本的常用字符串函数
    php 函数返回问题
    iframe 插入内容 (转)
    [OFFICE]如何查看OFFICE是否是永久激活
    [C语言]变量的声明和定义有什么区别
    [算法]快速判断一个数是否是2的幂次方
  • 原文地址:https://www.cnblogs.com/zhncnblogs/p/6645666.html
Copyright © 2011-2022 走看看