SpringBoot中添加事务
Posted 终会飞翔
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot中添加事务相关的知识,希望对你有一定的参考价值。
今天项目中需要使用到事务,所以在这里将SpringBoot的事务实现方式学习一下
SpringBoot中使用事务会使用到@Transactional这个注解来实现
先来对Transactional注解有个大致了解
1.其上注解
@Target({ElementType.METHOD, ElementType.TYPE})//METHOD:用于描述方法,TYPE:用于描述类、接口(包括注解类型) 或enum声明
@Retention(RetentionPolicy.RUNTIME)//注解不仅被保存到class文件中,jvm加载class文件之后,仍然存在
@Inherited//阐述了某个被标注的类型是被继承的
@Documented//表明这个注解应该被 javadoc工具记录
2.属性
2.1 rollbackFor(这就是我今天使用到的属性)
指定哪些异常需要进行事务回滚,这里可以设置异常数组,通常为RuntimeException.class、Exception.class
2.2 value和2.3 transactionManager(因为使用了AliasFor注解,value和transactionManager互为别名)
这两个放在一起讲,如果我们没有指定,默认为上下文中声明的名称为“transactionManager”,pringboot会自动配置一个 DataSourceTransactionManager
2.4 propagation 默认为Propagation.REQUIRED
用于设置事务的传播行为,业务方法需要在一个事务中运行,如果方法运行时,已处在一个事务中,那么就加入该事务,否则自己创建一个新的事务.这是spring默认的传播行为
2.5 isolation 默认为 Isolation.DEFAULT
用于设置底层数据库的事务隔离级别,事务隔离级别用于处理多事务并发的情况,通常使用数据库的默认隔离级别即可,基本不需要进行设置
2.6 timeout 默认为-1,表示永不超时
用于设置事务的超时秒数
2.7 readOnly 默认为false
设置当前事务是否为只读事务
2.8 rollbackForClassName (这个和rollbackFor最大的区别就是一个是指定异常类,一个是指定异常类名)
2.9 noRollbackFor(这个应该就是忽略哪些异常)
2.10 noRollbackForClassName(这个我觉得不需要我详细说明了)
3.实际使用(这算是手动回滚使用)
1.首先在我们需要使用事务的Service层的方法上添加@Transactional注解
2.rollbackFor配置我们需要捕获的哪些异常来进行事务回滚
3.其他参数按照自己实际需求来添加
4.方法中捕获这个异常,然后调用
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
注意:
[email protected]注解必须应用到public方法上才有效
以上是关于SpringBoot中添加事务的主要内容,如果未能解决你的问题,请参考以下文章