美文网首页
spring的事务

spring的事务

作者: Mei_Jiawei | 来源:发表于2018-07-20 23:42 被阅读0次

项目发布,用户反馈出现问题(有些数据会回滚,有些不会)。事务出现问题,记录一下。

说明: Consumer类 有事务,但是捕获了异常。FirstService类,没有事务,调用SecondService类方法。SecondService类 ,该方法有事务 ,默认事务配置。RetryAspect类,该方法主要用于拦截加了@RetryService类的注解,然后对于抛出异常的方法保存到数据库进行重试机制。

调用流程:Consumer类接收到请求,然后调用FirstService的methodFS方法,该方法会调用SecondService方法的methodSS方法,FS方法里面有@RetryAspect注解。

spring是通过spring aop来实现声明式事务处理的,具体操作(比如事务实行的配置和读取,事务对象的抽象),用TransactionProxyFactoryBean接口来使用AOP功能,生成proxy代理对象,通过TransactionInterceptor完成对代理方法的拦截,将事务处理的功能编织到拦截的方法中。

事务测试结果:

1.有事务public方法出现异常会回滚;

2.无事务public方法调用本类private方法事务失效,不会回滚;

3.有事务public方法里面捕获了异常,调用另一个带有默认传播的事务的public方法,异常不会回滚;

4.有事务public方法里面捕获了异常,并调用另一个默认传播的事务的public方法(有rollbackfor),嵌套事务都会回滚。会打印一个roll back的日志

5.假设有A抽象类,类上面加了声明式事务,B实现了A。B里面的方法为protected方法,事务不会生效,出现异常,不会回滚。B里面的方法为public方法,事务会生效,出现异常,回滚。

后面会分析源码。

相关文章

  • 关于事务的思考

    Spring对于事务的支持 Spring事务接口 Spring事务管理器 Spring并不直接管理事务,而是提供多...

  • Spring事务

    Spring 事务 分类 Spring可以支持编程式事务和声明式事务。 编程式事务 实现 Spring使用事务管理...

  • Spring事务的传播特性引发的一场血案

    Spring事务的传播特性是对于Spring事务管理的一项特殊配置;Spring事务基于Spring AOP特性,...

  • Spring中实现事务方式

    Spring 中实现事务的方式 Spring 并不直接支持事务,只有当数据库支持事务时,Spring 才支持事务,...

  • Spring 事务实现分析

    1. Spring 事务简介 Spring 本身并不实现事务,Spring事务 的本质 还是 底层数据库 对事务的...

  • 程序员之Spring

    1. Spring事务 spring的事务实现原理Spring事务将connection放入到当前线程的threa...

  • 面前温习

    Spring事务传播特性的浅析——事务方法嵌套调用的迷茫 解惑 spring 嵌套事务

  • spring事务的实现原理

    spring实现事务的原理 Spring事务 的本质其实就是数据库对事务的支持,没有数据库的事务支持,spring...

  • 面试题总结 —— JAVA高级工程师

    一、1、Spring 事务的隔离性,并说说每个隔离性的区别 解答:Spring事务详解 2、Spring事务的传播...

  • Spring事务的传播属性和隔离级别

    Spring事务传播属性 所谓spring事务的传播属性,就是定义在存在多个事务同时存在的时候,spring应该如...

网友评论

      本文标题:spring的事务

      本文链接:https://www.haomeiwen.com/subject/wjjcmftx.html