当前位置:   article > 正文

@Transactional注解_@transactional value

@transactional value
一、注解使用
@Transactional(timeout = 20,readOnly=false,rollbackFor=RuntimeException.class,propagation=Propagation.REQUIRED,isolation=Isolation.DEFAULT)
@Transactional注解可以设置的属性:
value
指定事务管理器的限定描述符

readOnly 
该属性用于设置当前事务是否为只读事务 ,设置为true表示只读,false则表示可读写,默认值为false。
例如:@Transactional(readOnly=true)

rollbackFor 
该属性用于设置需要进行回滚的异常类数组,当方法中抛出指定异常数组中的异常时,则进行事务回滚。
例如:
指定单一异常类:@Transactional(rollbackFor=RuntimeException.class)
指定多个异常类:@Transactional(rollbackFor={RuntimeException.class, Exception.class})

rollbackForClassName
该属性用于设置需要进行回滚的异常类名称数组,当方法中抛出指定异常名称数组中的异常时,则进行事务回滚。
例如:
指定单一异常类名称:@Transactional(rollbackForClassName="RuntimeException")
指定多个异常类名称:@Transactional(rollbackForClassName={"RuntimeException","Exception"})

noRollbackFor
该属性用于设置不需要进行回滚的异常类数组,当方法中抛出指定异常数组中的异常时,不进行事务回滚。
例如:
指定单一异常类:@Transactional(noRollbackFor=RuntimeException.class)
指定多个异常类:@Transactional(noRollbackFor={RuntimeException.class, Exception.class})

noRollbackForClassName
该属性用于设置不需要进行回滚的异常类名称数组,当方法中抛出指定异常名称数组中的异常时,不进行事务回滚。
例如:
指定单一异常类名称:@Transactional(noRollbackForClassName="RuntimeException")
指定多个异常类名称: @Transactional(noRollbackForClassName={"RuntimeException","Exception"})

propagation 
该属性用于设置事务的传播行为。 
例如:@Transactional(propagation=Propagation.NOT_SUPPORTED,readOnly=true)

isolation 
该属性用于设置底层数据库的事务隔离级别,事务隔离级别用于处理多事务并发的情况,通常使用数据库的默认隔离级别即可,基本不需要进行设置

timeout 
该属性用于设置事务的超时秒数,默认值为-1表示永不超时

多事务的场景下,要指定事务管理器
在设置事务管理器时,通过标签<qualifier value=""/>设置管理器的标识;
@Transactional(value=""),value可以是qualifier的值,可以是事务管理器的id

二、@Transactional注解的特性
  1. @Transactional只能被应用到public方法上, 对于其它非public的方法,如果标记了@Transactional也不会报错,但方法事务功能不会生效
  2. 默认遇到运行期异常RuntimeException,事务会回滚;可以使用属性改变或增加设置
  3. 注解只有应用到 public 方法上才有效
  4. 注解可以被应用于接口定义和接口方法、类定义和类的 public 方法上。因为注解是不能继承的,所以使用在接口上的注解要生效,接口的实现类要使用基于接口的代理代理。所以只建议注解使用在类的public方法上。



声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/225502
推荐阅读
相关标签
  

闽ICP备14008679号