情况一:如果没有在程序中手动捕获异常,如下代码事务会回滚
@Transactional(rollbackFor = { Exception.class }) public void test() throws Exception { doDbStuff1(); doDbStuff2();//假如这个操作数据库的方法会抛出异常,方法doDbStuff1()对数据库的操作会回滚。 }
如果doDbStuff2()方法抛出异常,方法doDbStuff1()对数据库的操作会回滚。
情况二:如果在程序中自已捕获异常未往外抛,如下代码事务不会回滚
@Transactional(rollbackFor = { Exception.class }) public void test() { try { doDbStuff1(); doDbStuff2();//假如这个操作数据库的方法会抛出异常,现在方法doDbStuff1()对数据库的操作 不会回滚。 } catch (Exception e) { e.printStackTrace(); } }
如果doDbStuff2()这个操作数据库的方法抛出异常,因为将异常捕获未往外抛,方法doDbStuff1()对数据库的操作不会回滚。
情况三:如果自己需要捕获异常又要返回错误时,可以参考以下做法
@Transactional(rollbackFor = { Exception.class }) public void test() { try { doDbStuff1(); doDbStuff2(); } catch (Exception e) { e.printStackTrace(); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();//就是这一句了,加上之后,如果doDbStuff2()抛了异常, //doDbStuff1()是会回滚的 return “xxx错误信息”; } }
相关推荐
自己做的一个简单的spring运用实例,主要是关于事务回滚的一个小例子,希望对还在纠结事务回滚的童靴有点帮助。。。
花了一晚上时间终于搞出来了Spring整合Mybatis事务回滚(Mysql数据库),控制Service层中的多次插入操作,多次操作整体是一个事务。 里面有缘嘛和jar包,资源为war包,导入即可。运行Test类中的测试代码即可。 建表...
Spring/SpringMVC/MyBatis整合,可事务回滚
Spring Cloud Gateway中的全局异常处理不能直接用@ControllerAdvice来处理,通过跟踪异常信息的抛出,找到对应的源码,自定义一些处理逻辑来符合业务的需求。 网关都是给接口做代理转发的,后端对应的都是REST API,...
1. 基于Aspectj实现动态数据源...6. 实现事务内切换数据源(支持原生Spring声明式事务哟,仅此一家),并支持多数据源事务回滚(有了它除了跨服务的事务你需要考虑分布式事务,其他都不需要,极大的减少了系统的复杂程度)
Spring中@Transactional事务回滚(含实例详细讲解,附源码)Java开发Java经验技巧共8页.pdf.zip
Spring的事务管理默认只对出现运行期异常(java.lang.RuntimeException及其子类)进行回滚,需要了解更多Spring事务方面的知识,可详看本
主要介绍了spring事务异常回滚实例解析,具有一定借鉴价值,需要的朋友可以参考下
Spring中的JdbcTemplate,Spring中的的事务.。。。。。。。
Spring中,使用切面全局捕获异常的同时,进行自定义异常抛出捕获,方便代码书写。
Spring事务管理A方法内部调用B方法的回滚问题测试代码
集成了Spring 3.2.2 Hibernate 3.3.2 Struts 2.3.4 用JPA的注解实现orm 不用创建数据库表 只需本机上有oracle即可 用JSR注解进行Spring的...用Spring Test整合Junit4 进行测试并自动事务回滚 不对数据库造成持久化操作
我们在捕获到异常并对异常进行处理时可能会遇到如下一些问题: ...5.接口抛出异常,破坏封装,打破了接口与实现之间的清晰界限。 6.异常处理代码散落在,修改起来时非常麻烦。无法对某些异常进行统一处理和修改。
Spring Boot 提供了统一的异常处理机制,通过使用 @ControllerAdvice 和 @ExceptionHandler 注解...在控制器中抛出自定义异常后,全局异常处理器可以捕获该异常并执行相应的处理逻辑,例如返回友好的错误提示给客户端。
主要介绍了Spring异常捕获且回滚事务解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
本篇文章主要介绍了浅谈Spring中@Transactional事务回滚及示例(附源码),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
Spring中的@Transactional事物回滚实例源码
本例所有的事务放在service层进行管理,方法中间抛出运行时异常以测试是否回滚 Spring配置文件中关于事务配置总是由三个组成部分,分别是DataSource、TransactionManager和代理机制这三部分,无论哪种配置方式,...
MANDATORY:必须在一个已存在的事务中执行,否则就抛出TransactionRequiredException异常。 REQUIRES_NEW:创建一个新的事务,并在该事务中执行;如果当前存在事务,则将当前事务挂起。 NOT_SUPPORTED:以非事务方式...
spring boot 纯注解方法事务控制回滚,注解+简单配置文件使用多线程demo