Spring @Trancation注解

Spring可以通过注解@Transactional来为业务逻辑层的方法(调用DAO完成持久化动作)添加事务能力。

@Tranactional注解分析

  • 作用域:Transactional作用于类上表示类上所有的方法使用指定的事务管理策略,作用于方法表示该方法使用指定的事务管理策略;如果方法和类同时定义了@Tranactional注解,那么方法上定义的@Tranactional的属性覆盖类上定义的@Tranactional的属性
  • value: 用于匹配Spring中定义的tranactionManager的名字,默认是Spring中名称为transactionManager的事务管理器
  • propagation:事务传播属性,默认是Propagation.REQUIRED
  • isolation:事务隔离级别,默认是Isolation.DEFAULT,它是指数据库的默认隔离级别
  • timeout:事务超时时间,默认是TransactionDefinition.TIMEOUT_DEFAULT,它是指数据库的默认的事务超时时间
  • readOnly:设置该事务是否是只读事务;默认为false;
  • rollbackFor:用于设定需要进行回滚的异常类数组,默认只对运行时异常RuntimeException进行回滚。

PS:Spring中的用@Trancational注解标记的方法互相嵌套调用时与是否是同一个线程,同一个类没有关系。只要是Trancational方法,它就会根据propagation属性的值去决定是创建一个新的事务还是加入已存在的事务中。

具体参考文章:

http://blog.csdn.net/blueheart20/article/details/44654007

嵌套的@Trancation参考文章:

http://www.vito16.com/2015/10/07/spring-transaction-scope-bug.html

http://stamen.iteye.com/blog/1441794

原文地址:https://www.cnblogs.com/userrain/p/5447887.html