`
benx
  • 浏览: 272167 次
  • 性别: 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事务异常回滚实例解析,具有一定借鉴价值,需要的朋友可以参考下

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

    Spring的事务管理默认只对出现运行期异常(java.lang.RuntimeException及其子类)进行回滚,需要了解更多Spring事务方面的知识,可详看本

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

    主要介绍了Spring异常捕获且回滚事务解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    spring五种事务配置demo

    测试spring事务管理 搭建了ssh框架的web工程 本工程用到的数据库表很简单 user(id, name) 可自行创建 本例所有的事务放在service层进行管理,方法中间抛出运行时异常以测试是否回滚 Spring配置文件中关于事务...

    hmily-master.zip

    高可靠性 :支持分布式场景下,事务异常回滚,超时异常恢复,防止事务悬挂 易用性 :提供零侵入性式的 Spring-Boot, Spring-Namespace 快速与业务系统集成 高性能 :去中心化设计,与业务系统完全融合,天然支持集群...

    Spring2.5和Hibernate3集成--学习spring aop ioc

    * 默认事务回滚异常是RuntiimeException(包括所有继承RuntimeException的子类).普通异常不回滚 * 在编写业务逻辑方法时,最好将异常一直往上抛出,由表示层处理(Struts) * spring的事务管理需要添加到业务逻辑上...

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

    用springboot 集成mybatis多数据源,用aop实现的动态切换,支持事务,不会使aop动态切换失效。注意:此代码不涉及分布式事务,如果需要分布式事务 需要采取其他方案。

    基于springcloud+springboot+nacos+openFeign的分布式事务组件seata项目源码.zip

    最后出现异常则统一回滚,负责统一提交; 第一阶段:准备阶段(prepare)协调者通知参与者准备提交订单,参与者开始投票。协调者完成准备工作向协调者回应Yes。 第二阶段:提交(commit)/回滚(rollback)阶段协调者...

    Spring笔记说明文件

    3)、ProxyTransactionManagementConfiguration 做了什么? 1、给容器中注册事务增强器; 1)、事务增强器要用事务注解... 如果异常,获取到事务管理器,利用事务管理回滚操作; 如果正常,利用事务管理器,提交事务

    Hmily柔性分布式事务解决方案 v2.2.1

    为您提供Hmily柔性分布式事务解决方案下载,Hmily是柔性分布式事务解决方案,提供了TCC 与 TAC 模式...功能:高可靠性:支持分布式场景下,事务异常回滚,超时异常恢复,防止事务悬挂易用性:提供零侵入性式的 Spring-

    lcn-demo.rar

    基于LCN 的微服务事务管理项目Demo。管理SpringCloud + springboot微服务之间的事务 处理,异常回滚操作。

    【Spring源码解析】事务流程解析

    抛出异常,事务回滚。最小的执行单位为方法。决定执行成败是通过是否抛出异常来判断的,抛出异常即执行失败。 2、代码 (1) mysql建表语句 CREATE TABLE `t_student` ( `c_id` int(11) NOT NULL AUTO_INCREMENT, `c...

    尚硅谷佟刚Spring4代码及PPT.rar

    JdbcDaoSupport、使用 NamedParameterJdbcTemplate、Spring 的声明式事务、事务的属性(传播行为、隔离级别、回滚属性、只读属性、过期时间)、使用 XML 文件的方式配置事务、整合 Hibernate、整合 Struts2 等。

    jta分布式事务完成例子,测试通过

    先向tb1插一条数据,然后在向tb2插一条数据,当没有设置事务时,如果tb2出现异常,tb1能正常插入数据,当设置了分布式事务后,如果tb2出现异常,tb1会自动回滚,没有数据插入。 分布式事务是针对不同数据库的(当然...

    Spring-Reference_zh_CN(Spring中文参考手册)

    9.5.1. 理解Spring的声明式事务管理实现 9.5.2. 第一个例子 9.5.3. 回滚 9.5.4. 为不同的bean配置不同的事务语义 9.5.5. <tx:advice/> 有关的设置 9.5.6. 使用 @Transactional 9.5.6.1. @Transactional 有关的设置 ...

    Spring_doc

    Spring的事务管理通过AOP代理来实现 根据事务属性,对每个代理对象的每个方法进行拦截, 在方法执行前启动事务, 方法执行完毕后根据是否有异常和异常种类进行... spring 默认通过捕获运行时异常实现事务提交或回滚

    第24次课-1 Spring与Hibernate的整合

    如遇异常,回滚事务 关闭Session 24.3 Spring对Hibernate的简化 24.3.1 概述 Spring提供的持久层访问的方式,无须显式地打开和关闭Session,也无须在代码中执行任何的事务操作语句。 Spring提供了HibernateTemplate...

    Spring 2.0 开发参考手册

    9.5.1. 理解Spring的声明式事务管理实现 9.5.2. 第一个例子 9.5.3. 回滚 9.5.4. 为不同的bean配置不同的事务语义 9.5.5. <tx:advice/> 有关的设置 9.5.6. 使用 @Transactional 9.5.7. 插入事务操作 9.5.8. ...

    Spring_Hibernate集成

    * 默认情况下运行期异常才会回滚(包括继承了RuntimeException子类),普通异常是不会滚的 * 编写业务逻辑方法时,最好将异常一直向上抛出,在表示层(struts)处理 * 关于事务边界的设置,通常设置到业务层,...

    Spring中文帮助文档

    9.5.1. 理解Spring的声明式事务管理实现 9.5.2. 第一个例子 9.5.3. 回滚 9.5.4. 为不同的bean配置不同的事务语义 9.5.5. <tx:advice/> 有关的设置 9.5.6. 使用 @Transactional 9.5.7. 事务传播 9.5.8. 通知...

Global site tag (gtag.js) - Google Analytics