Spring事务管理-<tx:advice>标签

转自:https://www.aliyun.com/jiaocheng/1311989.html

首先先看一下代码:

 <bean name="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>

    <tx:advice id="txAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <tx:method name="delete*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception"/>
            <tx:method name="insert*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception"/>
            <tx:method name="update*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception"/>
            <tx:method name="save*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception"/>
        </tx:attributes>
    </tx:advice>

需要在< tx:advice >标签内设置id和transaction-manager属性,id为advice bean的标识,transaction-manager则必须引用一个PlatformTransactionManager Bean。

然后在标签内通过 < tx:attributes >创建通知行为,上述代码通知所开启的事务针对所有的delete、insert……方法。
默认的< tx:advice >设置如下:

  • 事务传播设置是:REQUIRED
  • 隔离级别是:DEFAULT
  • 事务是:读/写
  • 事务超时默认是依赖于事务系统的,或者事务超时没有被支持。
  • 任何RuntimeException将触发事务回滚,但任何checkedException将不触发事务回滚。

< tx:method >有关的设置

属性是否必须默认值描述
name   与事务属性关联的方法名,通配符*可以用来指定一批关联到相同的事务属性的方法
propagation REQUIRED 事务传播行为
isolation DEFAULT 事务隔离级别
timeout -1 事务超时的时间(以秒为单位)
read-only false 食物是否只读
rollback-for   将被触发进行回滚的Exception(s),以逗号隔开。
no-rollback-for   不被触发进行回滚的Exception(s),以逗号隔开。
原文地址:https://www.cnblogs.com/sharpest/p/7723691.html