首页 > 其他分享 >事务失效场景

事务失效场景

时间:2023-02-19 19:01:24浏览次数:27  
标签:事务 场景 代理 Callable 调用 static 失效 异常

一、 访问符非public

  1. 改为public

  2. 开启AspectJ代理

  注: static和final会导致动态无法代理,导致事务不生效;动态代理的方式有两种:JDK动态代理,cglib代理,static使method属于类而不属于任何对象,即使写法上是重写,也没有重写的含义,即重写static方法是没有意义的

 

二、 @Transactional抛出的异常并非是spring事务支持的异常。如:Exception

  1. rollback=Exception.class

  2. throw new RuntimeException

  注:只支持uncheck的Exception

 

三、 数据库不支持的事务

  mysql中的MyISAM是不支持事务的,InnoDB是支持事务的

 

四、@Service被注释

  不被spring管理的是不支持事务的

 

五、 异常被捕获

  1. 捕获的异常再抛出

 

六、 方法自身调用问题(非事务方法调用事务;自己调用自己)

  1. 拆分

  2. 自己注入自己,调用实例

  3. 获取代理类(AopContext.currentProxy().method)

 

七、 数据源没有配置事务管理器

 

八、传播类型不支持事务

 

九、 多线程调用

  多线程分为(1、继承Thread;2、实现Runable;3、实现Callable和Future(实现Callable接口后,用FutureTask包装Callable类,然后用Thread封装Future,最后使用start启动))

  在方法上使用REQUIRES_NEW作为隔离等级,在调用方法上使用@Transactional开启事务

  隔离类型

  1. required  没有事务就新建,有就加入

  2. support  有加入,没有就无事务执行

  3. mandatory  没有事务就抛出异常

  4. required_new  有事务就建一个新的事务

  5. not_support  有事务就挂起,以非事务执行

  6. never  以非事务执行,有就抛出异常

  7. nested  有事务就嵌套执行,没有就建一个新的事务

  required_new新事物执行完就会提交,但是nested会等待最外层的事务执行完再提交

  嵌套事务分为父子事务:

    父事务提交的时候,子事务也提交

    父事务回退的时候,子事务也回退

    但是子事务的回退不会影响到父事务

标签:事务,场景,代理,Callable,调用,static,失效,异常
From: https://www.cnblogs.com/cambra/p/17135283.html

相关文章

  • Vue 的生命周期 详细解析(使用场景等)
    Vue生命周期图:  一、生命周期图的解读newVue():首先需要创建一个Vue的实例对象InitEvents&Lifecycle:初始化:生命周期、事件(如:v-once),但数据代理还未开始(vm._d......
  • 性能测试-阶梯性能测试场景(负载测试)
    1、安装阶梯测试的第三方插件-搜jpgc空格选项-JMeterPluginsManager-搜jpgc空格,然后安装2、脚本-线程组选jp@gcSteppingThreadGroup最终并发数为100,并发数从0......
  • 性能测试-普通性能场景设计(类似1000个人同时发起访问)-简单性能分析
    1、普通性能场景设计1.1启动项目  1.2jmeter脚本设计-响应时间图-聚合报告  1.3运行结果分析   场景:30个并发用户,持续运行300s......
  • 性能测试-性能场景设计-线程组参数介绍
    1、性能测试需求需求1:活动页面,要你做性能测试,看是否能满足1000个人同时访问。需求2:商定,对接的接口,要满足50tps。---这样的场景怎么设计需求3:  秒杀活动,我要看,秒......
  • MongoDB简介与应用场景、Docker安装Mongo、整合SpringBoot实现CRUD
    (目录)1MongoDB相关概念1.1业务应用场景传统的关系型数据库(如MySQL),在数据操作的“三高”需求以及应对Web2.0的网站需求面前,显得力不从心。解释:“三高”需求:•Hi......
  • 存储过程调存储过程的事务
    直接上代码: 是在包里写的存储过程,要测试的话,要先写声明 声明proceduretest1(p_RETCODEinoutvarchar2,p_retInfoinoutvarchar2);proceduretest2(p_RETCODEin......
  • Apache Hudi 流转批 场景实践
    背景在某些业务场景下,我们需要一个标志来衡量hudi数据写入的进度,比如:Flink实时向Hudi表写入数据,然后使用这个Hudi表来支持批量计算并通过一个flag来评估它的分区数......
  • Qt Quick 3D - 实战(ADAS场景)
    QtQuick3D-实战(ADAS场景、3D中控车辆展示)1.此篇介绍大致内容,后续会建一个仓库2.ADAS场景实战内容如下:  2.1车道线随信号数据进行曲率变化  2.2车道线随信......
  • NSDT可编程3D场景
    推荐:将 NSDT场景编辑器 加入你的3D开发工具链。NSDT编辑器简化了WebGL3D应用的开发,完全兼容Three.JS生态。本文介绍如何在自己的应用中嵌入使用NSDT编辑器搭建的3D场......
  • Spring事务(Transaction)管理高级篇一栈式解决开发中遇到的事务问题
    Spring是目前Java开发中最流行的框架了,它的事务管理我们在开发中常常的用到,但是很多人不理解它事务的原理,导致开发中遇到事务方面的问题往往都要用很长的时间才能解决,下面......