spring里tx标签声明式事物的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring里tx标签声明式事物的问题相关的知识,希望对你有一定的参考价值。

<tx:method name="*" propagation="REQUIRED" rollback-for="Exception"/>

rollback-for和Exception分别表示什么

<tx:method/> 有关的设置

属性 是否需要? 默认值 描述
name 是 与事务属性关联的方法名。通配符(*)可以用来指定一批关联到相同的事务属性的方法。 如:'get*'、'handle*'、'on*Event'等等。
propagation 不 REQUIRED 事务传播行为
isolation 不 DEFAULT 事务隔离级别
timeout 不 -1 事务超时的时间(以秒为单位)
read-only 不 false 事务是否只读?
rollback-for 不 将被触发进行回滚的 Exception(s);以逗号分开。 如:'com.foo.MyBusinessException,ServletException'
no-rollback-for 不 不 被触发进行回滚的 Exception(s);以逗号分开。 如:'com.foo.MyBusinessException
参考技术A 事物提交有异常(Exception)就会滚(rollback)。
rollback-for表示产生什么异常时回滚事物。

Spring 声明式事物

一、xml配置事物管理器

    <!-- 配置事物管理器 -->  
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  
        <property name="dataSource" ref="dataSource" />  
    </bean>  
      
    <!-- 开启事务控制的注解支持 -->  
    <tx:annotation-driven transaction-manager="transactionManager"/>

  

二、@Transactional

 

三、什么时候回滚事物

默认配置下,spring只有在抛出的异常为RuntimeException或其子类(Errors也会导致事务回滚),而其他非运行时异常则不会导致事务回滚。

可以明确的配置在抛出那哪些异常时回滚事务,包括checked异常。也可以明确定义那些异常抛出时不回滚事务。

还可以编程性的通过setRollbackOnly()方法来指示一个事务必须回滚,在调用完setRollbackOnly()后你所能执行的唯一操作就是回滚。

1 让checked例外也回滚:在整个方法前加上 @Transactional(rollbackFor=Exception.class)

2 让unchecked例外不回滚: @Transactional(notRollbackFor=RunTimeException.class)

 

参考:http://blog.csdn.net/bao19901210/article/details/41724355

以上是关于spring里tx标签声明式事物的问题的主要内容,如果未能解决你的问题,请参考以下文章

Spring-声明式事物

170110Spring 事物机制总结

spring事物-----手写spring的事物框架

spring事物配置,声明式事务管理和基于@Transactional注解的使用

Spring中的事物管理,用 @Transactional 注解声明式地管理事务

spring事物配置,声明式事务管理和基于@Transactional注解的使用