Spring入门知识 ———— Spring事务注解其他属性(回滚、只读、过期)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_38111957/article/details/83999385

一、引言

咱们spring入门知识也接近尾声,后续小编会时不时更新Spring源码解析的文章,更加深入的理解。

那么今天来看下@Transactional这个注解的其他几个属性,这里小编就只是介绍了,不为大家进行演示了。

二、回滚

@Transactional注解默认是针对全部运行时异常进行回滚,那么当然我们也可以通过相关属性进行设置。

1、rollbackFor:该属性设置需要进行回滚的异常,当方法中抛出指定异常时,则事务进行回滚

     例如指定一个:@Transactional(rollbackFor=NullPointerException.class)

     例如指定多个:@Transactional({rollbackFor=NullPointerException.class,Exception.class})

2、rollbackForClassName:该属性设置需要进行回滚的异常,当方法中抛出指定异常时,则事务进行回滚

      例如:@Transactional(rollbackForClassName="NullPointerException"),多个请用{}

3、noRollbackFor:该属性设置不需要回滚的异常,当方法中抛出指定异常,则事务不进行回滚

      例如:@Transactional(noRollbackFor=NullPointerException.class),多个请用{}

4、noRollbackForClassName:该属性设置不需要回滚的异常,当方法中抛出指定异常,则事务不进行回滚

      例如:@Transactional(noRollbackForClassName="NullPointerException"),多个请用{}

三、只读

使用readOnly属性,指定该事务是否只读,表示这个事务只读取数据但不更新数据,这样有利于数据库索引优化事务。

1、@Transactional(readOnly=true),表示该事务真的是一个只读的方法

2、@Transactional(readOnly=false),表示该事务不是一个只读的方法

四、超时

如果一个事物可能会因为某些原因导致执行时间过长,可以通过timeout属性来指定运行时间,如果超过该时间,则事务进行回滚操作,单位为秒。

1、@Transactional(timeOut=3),表示该事务只能执行3秒以内,如果超出则回滚事务

猜你喜欢

转载自blog.csdn.net/weixin_38111957/article/details/83999385