`
springcloud微服务框架
  • 浏览: 24506 次
文章分类
社区版块
存档分类
最新评论

Spring Boot 事物回滚

 
阅读更多

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认为该方法成功执行,不会进行回滚,此时需要调用②中方法进行手动回滚 (java 框架项目案例:www.fhadmin.cn)

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

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

 

分享到:
评论

相关推荐

    spring-控制事物回滚

    "spring-控制事物回滚"这个主题主要涉及Spring如何在出现异常时自动或手动触发事务的回滚,以及如何配置和使用Spring的事务管理机制。我们将深入探讨Spring事务管理的原理、API使用以及在实际开发中的应用。 首先,...

    Spring Boot多数据源(支持Spring声明式事务切换和回滚).pdf

    《Spring Boot多数据源(支持Spring声明式事务切换和回滚)》 Spring Boot多数据源技术是构建高效、灵活的多租户SaaS架构的关键。在本文中,我们将深入探讨如何实现动态数据源切换,支持Spring声明式事务管理,并讨论...

    spring boot注解事务+多线程

    在Spring Boot应用中,事务管理和多线程是两个非常关键的特性,特别是在处理复杂的业务逻辑时。本示例将深入探讨如何使用注解来实现事务控制以及如何在Spring Boot中运用多线程。 首先,让我们关注"注解事务"。在...

    Spring Boot数据库事务控制.zip

    在Spring Boot中,可以使用@ControllerAdvice和@ExceptionHandler注解定义全局异常处理器,结合@Transactional(rollbackFor = Exception.class)来确保所有异常都能触发回滚。 10. **分布式事务**:在微服务架构中,...

    Springboot 动态多数据源 jta分布式事务

    4. 使用`@Transactional`注解:在需要进行分布式事务的方法上添加此注解,Spring Boot会自动处理事务的提交和回滚。 最后,压缩包中的`demo`文件很可能是包含了上述配置和示例代码的项目模板。你可以下载并运行这个...

    最新版本SpringCloud+seata+nacos实现全局事物处理的demo案例

    模拟订单和库存的一个简单案例实现,注册到nacos配置中心,通过feign远程调用模拟异常进行全局事物回滚。 内含sql文件,nacos、seata安装包以及对应seata配置所需的script脚本(也可自行官网下载) ...

    springboot实现多数据源而且加上事务不会使aop切换数据源失效

    在Spring Boot应用中,我们经常遇到需要连接多个数据库的情况,比如主从数据库、读写分离等。本示例主要讲解如何使用Spring Boot结合MyBatis实现多数据源切换,并确保AOP事务管理仍然有效。 首先,我们需要配置多...

    springboot-atomikos 多数据源统一事物管理demo

    本项目"springboot-atomikos 多数据源统一事物管理demo"主要展示了如何在Spring Boot应用中集成Atomikos来实现多数据源的统一事务管理。 首先,我们来详细解释一下Spring Boot和Atomikos: 1. **Spring Boot**:...

    spring 事物总结

    - Spring Boot通过`@EnableTransactionManagement`注解自动配置事务管理器,并根据依赖自动选择合适的PlatformTransactionManager实现。 - 可以通过`spring.datasource事务`配置项进一步定制事务管理器的行为。 ...

    springboot + mybatis + atomikos 多数据源分布式事物管理

    Spring Boot、MyBatis 和 Atomikos 的结合提供了一种解决方案,用于处理多数据源的分布式事务管理。以下是对这个主题的详细阐述。 首先,Spring Boot 是一个基于 Spring 框架的轻量级开发工具,它简化了配置过程并...

    springCloud-rabbitmq分布事物实现.zip

    Spring Cloud为RabbitMQ提供了一套完整的配置和API支持,使得在Spring Boot应用中使用RabbitMQ变得更加便捷。通过`@EnableRabbit`注解,我们可以启用RabbitMQ配置,并通过`@RabbitListener`监听消息,`@...

    springboot中事务管理@Transactional的注意事项与使用场景

    2. 默认回滚机制:Spring 基于注解的声明式事物 @Transactional 默认情况下只会对运行期异常(java.lang.RuntimeException 及其子类)和 Error 进行回滚。 3. 数据库引擎支持:数据库引擎要支持事务,使用 InnoDB。 ...

    mongoDB4.0.5 安装包 支持事物

    在实际应用中,MongoDB 4.0.5可以轻松地与Spring Boot框架集成,Spring Boot是一个流行的Java应用程序开发框架,以其快速启动和简化配置而闻名。通过在Spring Boot应用中注入MongoDB事务管理器,开发者可以方便地...

    SpringBoot多数据源以及多数据源事物

    在Spring Boot应用中,多数据源的配置与事务管理是一项重要的功能,特别是在大型分布式系统中,可能需要连接多个数据库以实现数据隔离或者扩展性。本文将深入探讨Spring Boot如何实现多数据源配置以及多数据源事务...

    springboot使用事物注解方式代码实例

    在 Spring Boot 框架中,事务的回滚规则可以通过@Transactional 注解的 rollbackFor 属性来设置。例如: ```java @Transactional(rollbackFor = Exception.class) public void deleteById(Integer id) { userMapper...

    03_JPA详解_搭建JPA开发环境和全局事务介绍.zip

    1. **JTA事务管理**: 配置Spring Boot以使用JTA事务管理,需要引入`spring-boot-starter-jta-atomikos`或`spring-boot-starter-jta-bitronix`依赖,并配置相应的事务管理器。 2. **Atomikos和Bitronix**: Atomikos...

    seata分布式事物模型代码

    "seata-demo"中的示例项目可能包含了Seata与Spring Boot的集成,展示了如何在代码中使用Seata的API启动和管理分布式事务。通常,会有一个简单的数据库操作示例,如增删改查,用于展示Seata如何处理分布式事务中的...

    实验报告4-资料.rar

    此外,还可能探讨如何在实际项目中应用这些技术,例如通过Spring Boot简化配置,利用MyBatis的动态SQL提升查询效率,以及利用AOP实现跨方法的事务处理策略。通过这个实验,读者不仅可以深化对这些技术的理解,还能...

    Java面试框架高频问题2019

    - **Spring Boot**是基于Spring框架的简化版,它旨在简化新Spring应用的初始搭建以及开发过程。Spring Boot采用了一种初始即配置的思想,很多集成内容都无需配置。 **2.SpringBoot有哪些优点?** - 自动配置:减少...

Global site tag (gtag.js) - Google Analytics