`
benx
  • 浏览: 276183 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Spring 事务异常回滚

    博客分类:
  • java
 
阅读更多

 

先看如下代码

 

 

@Transactional(propagation = Propagation.REQUIRED, rollbackFor = { AppBizExeA.class } , noRollbackFor = { AppBizExeB.class })
	public void method1() throws Exception {
		System.out.println("method1 start");
		TPerson per = new TPerson();
		per.setAge("24");
		per.setId(123);
		per.setName("xj");
		personDao.add(per);
		throw new NullPointerException();
	}

	
	@Transactional(propagation = Propagation.NESTED, rollbackFor = { AppBizExeA.class })
	public void method2() throws Exception {
		System.out.println("method2 start");
		TPerson per = new TPerson();
		per.setAge("24");
		per.setId(1234);
		per.setName("xj");
		personDao.add(per);
		System.out.println("method2 end");

	}

 

 

public static void main(String[] args) throws Exception {

		ApplicationContext context = new ClassPathXmlApplicationContext(new String[] { "classpath:com/benx/benx.xml" });
		PersonService service = (PersonService) context.getBean("personService");
		service.method1();

	}
 

 

 

今天只谈传播行为为REQUIRED的,其他先不谈,因为使用比较少,而且支持也不够好

 

1、执行service.method1(),不管method里面是否嵌套了method2或其他,事务都是以method1开始和结尾,且事务配置同样以method1为准,忽略其他REQUIRED行为的配置,比如异常机制,以method1为准,忽略method2的异常配置

 

2、Transactional的异常控制,默认是Check Exception 不回滚,unCheck Exception回滚

 

3、如果配置了rollbackFor 和 noRollbackFor 且两个都是用同样的异常,那么遇到该异常,还是回滚

 

4、rollbackFor 和noRollbackFor 配置也许不会含盖所有异常,对于遗漏的按照Check Exception 不回滚,unCheck Exception回滚

 

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论
1 楼 gotosuzhou 2015-04-15  
好的
  谢谢分享

相关推荐

    spring事务异常回滚实例解析

    本文主要关注的是声明式事务管理,尤其是涉及到事务异常回滚的实例解析。 首先,Spring 默认只有在遇到未捕获的 `RuntimeException` 或其子类时才会触发事务回滚。这意味着,如果在业务代码中对异常进行了捕获并...

    spring 简单实例 事务回滚

    总之,这个“spring简单实例 事务回滚”案例为我们提供了一个学习Spring事务管理的好起点。通过理解如何配置事务管理器,使用`@Transactional`注解,以及异常处理机制,我们可以更好地掌握Spring如何保证数据的一致...

    子线程任务发生异常,主线程事务如何回滚

    子线程任务发生异常,主线程事务如何回滚? 本文将详细探讨当子线程任务发生异常时,如何让主线程捕获到该异常并进行事务的回滚。下面将从多线程编程的基础知识、线程池的使用、异常捕获三个方面进行阐述。 一、多...

    Spring/SpringMVC/MyBatis整合+事务回滚

    7. **实现事务回滚**:当在@Transactional注解的方法中发生异常时,Spring会自动回滚事务。例如,如果在保存数据时发生错误,整个事务将被回滚,保证数据的一致性。 8. **测试与调试**:完成整合后,通过编写单元...

    Spring事务管理只对出现运行期异常进行回滚

    5. **事务的回滚规则**:除了默认仅对运行时异常回滚外,还可以自定义回滚规则,比如通过`@Transactional(rollbackFor = Exception.class)`来指定任何类型的异常都触发回滚。 6. **事务的边界**:事务的开始和结束...

    Spring事务管理A方法内部调用B方法的回滚问题测试代码

    在Spring框架中,事务管理是核心特性之一,用于确保数据操作的一致性和完整性。当一个方法(A方法)内部调用另一个方法(B方法)时,可能会遇到事务控制...这个示例代码对于理解和调试Spring事务管理的问题非常有帮助。

    Spring中@Transactional事务回滚(含实例

    在Spring框架中,`@Transactional`注解是用于标记事务管理的重要工具,它使得开发者能够方便地在代码中声明式地控制事务的...通过实例分析和源码阅读,我们可以更深入地理解Spring事务管理机制,提升我们的编程技能。

    spring-控制事物回滚

    我们将深入探讨Spring事务管理的原理、API使用以及在实际开发中的应用。 首先,Spring事务管理有编程式和声明式两种方式。编程式事务管理通过`PlatformTransactionManager`接口和`TransactionDefinition`接口来实现...

    Spring事务传播机制.docx

    这里是事务异常回滚的地方,这里有个注意点是回滚会先用 rollbackOn 这个方法判断,默认情况下只有 RunTimeException 及 Error 是会进行回滚的,除非在@Transactional 显式声明了 rollbackFor。 二、Spring 的事务...

    Spring异常捕获且回滚事务解决方案

    Spring 异常捕获且回滚事务解决方案 在 Spring 框架中,异常捕获和回滚事务是非常重要的概念。今天,我们将讨论如何在 Spring 中捕获异常并回滚事务。 首先,让我们了解一下 Spring 的事务机制。当我们在 Spring ...

    SpringBoot事务使用及回滚实现代码详解

    需要注意的是,在try-catch语句中,如果catch块中对可能出现的异常进行了处理,没有再手动throw异常,Spring认为该方法成功执行,不会进行回滚。此时需要调用手动回滚方法以确保事务的一致性。 此外,在finally块中...

    mongoDB 4.0事务回滚的辛酸历程探究

    事务回滚是事务处理中的关键部分,确保在出现错误或异常时,数据库能够恢复到事务开始之前的状态。 在升级到MongoDB 4.0之后,首先需要注意的是确保环境的兼容性。使用Homebrew升级MongoDB到4.0.0版本,同时更新`...

    Spring事务流程图

    Spring事务管理是Spring框架的核心特性之一,主要用于处理应用程序中的数据一致性问题。在Spring中,事务管理分为编程式和声明式两种方式。本篇文章将详细解释Spring事务管理的流程,以及如何通过时序图来理解这一...

    spring事务案例分析.zip

    通常,我们可以配置全局事务异常处理器,例如使用@ControllerAdvice和@ExceptionHandler注解,来统一处理事务回滚和错误反馈。 7. **案例分析**:"SPRING事务管理案例分析.docx"很可能包含了具体的项目实例,详细...

    Spring事务管理Demo

    Spring事务管理的目的是确保数据的一致性和完整性,尤其是在多操作、多资源的环境中。本Demo将深入探讨Spring如何实现事务的管理。 首先,Spring提供了两种主要的事务管理方式:编程式事务管理和声明式事务管理。 ...

    Spring事务小demo

    3. **异常回滚规则**:默认情况下,如果在@Transactional注解的方法中抛出未检查异常(继承自RuntimeException)或者Error,Spring会自动回滚事务。对于检查异常(非RuntimeException),如果不指定回滚规则,事务...

    完美解决Spring声明式事务不回滚的问题

    Spring事务管理操作方法 ------------------------ 在Spring中,事务管理操作方法可以分为两种:编程式的事务管理和声明式的事务管理。编程式的事务管理是通过手动编写代码来管理事务,而声明式的事务管理是通过...

    spring事务操作试验

    本文将深入探讨在"spring事务操作试验"中涉及的关键知识点,并结合提供的资源进行详细阐述。 首先,Spring事务管理的核心概念是ACID(原子性、一致性、隔离性和持久性),这是所有事务系统的基础。在Spring中,事务...

    浅谈Spring中@Transactional事务回滚及示例(附源码)

    浅谈Spring中@Transactional事务回滚及示例 @Transactional是Spring Framework中的一种事务管理机制,用于管理数据库事务。它可以使得数据库操作更加安全和可靠。本文将详细介绍@Transactional的使用场景、checked...

Global site tag (gtag.js) - Google Analytics