一、引言
咱们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秒以内,如果超出则回滚事务