当前位置:首页 > 后端开发 > Springboot事务使用与回滚

Springboot事务使用与回滚

7个月前 (05-25)63

Springboot中事务的使用:

1、启动类加上@EnableTransactionManagement注解,开启事务支持(其实默认是开启的)。

2、在使用事务的public(只有public支持事务)方法(或者类-相当于该类的所有public方法都使用)加上@Transactional注解。

在实际使用中一般是在service中使用@Transactional,那么对于controller->service流程中:

如果controller未开启事务,service中开始了事务,service成功执行,controller在之后的运行中出现异常(错误),不会自动回滚。

也就是说,只有在开启事务的方法中出现异常(默认只有非检测性异常才生效-RuntimeException )(错误-Error)才会自动回滚。

 如果想要对抛出的任何异常都进行自动回滚(而不是只针对RuntimeException),只需要在使用@Transactional(rollbackFor = Exception.class)即可

开启事务的方法中事务回滚的情况:

①未发现的异常,程序运行过程中自动抛出RuntimeException或者其子类,程序终止,自动回滚。

②使用TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();进行手动回滚。

注意:如果在try-catch语句中对可能出现的异常(RuntimeException)进行了处理,没有再手动throw异常,spring认为该方法成功执行,不会进行回滚,此时需要调用②中方法进行手动回滚,如下图:

另外,如果try-catch语句在finally中进行了return操作,那么catch中手动抛出的异常也会被覆盖,同样不会自动回滚。

Springboot事务使用与回滚 _ Java侠

//不会自动回滚
try{
    throw new RuntimeException();
}catch(RuntimeException e){
    e.printStackTrace();
}finally{
}
//会自动回滚
try{
    throw new RuntimeException();
}catch(RuntimeException e){
    e.printStackTrace();
    throw new RuntimeException();
}finally{
}

作者:small onion
来源链接:https://blog.csdn.net/weixin_41945228/article/details/89920739

“Springboot事务使用与回滚” 的相关文章

spring boot事务(注解模式)

使用注解模式不需要配置文件,也不需要配置事务配置类或者方法,只需要使用“@Transcation”注解引入到相对应的位置即可实现事务回滚功能。...

SpringBoot 事务不起作用

天真的以为在类或者方法加@Transactional注解就能启用事务了。 还得有下面得操作啊。 @SpringBootApplication @Enable...

Springboot声明式事务

Springboot声明式事务

1.开启事务管理 @EnableTransactionManagement 2.注解驱动 @Transactional...

基于注解形式的统一事务管理---springboot

一前言 在操作数据库的时候,我们经常对一个service层进行事务设置,在springmvc中都是配置在xml文件中,在springboot中...

Springboot事务注意事项

今天看到别人的博客,突然看到这个问题,关于@Transactional注解。多个数据源的情况下使用默认事务。 如果存在多个数据源,并且会配置多...

Springboot如何开启事务

Springboot如何开启事务

第一步:在入口类使用注解@EnableTransactionManagement开启事务支持: 第二步:在需要使用事务的service...

SpringBoot全局异常与事务控制

SpringBoot全局异常与事务控制

一、Spring Boot 事务支持       在使用Jdbc 作为数据库访问技...

Spring Boot 开发常用注解汇总

SpringBoot 开发常用注解汇总 tips:建议参考springboot源码进行学习、有兴趣可以看看源码知道注解的实现原理(基...

Spring Boot @Transactional 配置事务管理,切换 AOP 代理,@EnableAspectJAutoProxy

Spring Boot @Transactional 配置事务管理,切换 AOP 代理,@EnableAspectJAutoProxy

目录 Spring 事务管理概述 演示环境准备 @Transactional 最简单用法 @Transactional 注解属性介绍 propa...

SpringBoot中的事务注解开发——@Transactional

SpringBoot中的事务注解开发——@Transactional

事务管理是应用系统开发中必不可少的一部分。Spring 为事务管理提供了丰富的功能支持。Spring 事务管理分为编程式和声明式的两种方式。编程式事...