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

2022-07-16 12:59:17

首先先看一下代码:

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

    <tx:adviceid="txAdvice"transaction-manager="transactionManager">
        <tx:attributes>
            <tx:methodname="delete*" propagation="REQUIRED"read-only="false" rollback-for="java.lang.Exception"/>
            <tx:methodname="insert*" propagation="REQUIRED"read-only="false" rollback-for="java.lang.Exception"/>
            <tx:methodname="update*" propagation="REQUIRED"read-only="false" rollback-for="java.lang.Exception"/>
            <tx:methodname="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与事务属性关联的方法名,通配符*可以用来指定一批关联到相同的事务属性的方法
propagationREQUIRED事务传播行为
isolationDEFAULT事务隔离级别
timeout-1事务超时的时间(以秒为单位)
read-onlyfalse食物是否只读
rollback-for将被触发进行回滚的Exception(s),以逗号隔开。
no-rollback-for不被触发进行回滚的Exception(s),以逗号隔开。
  • 作者:YEN_csdn
  • 原文链接:https://blog.csdn.net/YEN_CSDN/article/details/52550726
    更新时间:2022-07-16 12:59:17