场景:Spring+Ibatis环境,使用spring aop事务(配置到service层),在一个service方法中,自定义了一个多线程,结果事务不起作用了,不用线程,则事务有效。

原因:Spring的事务是通过ThreadLocal来保证线程安全的,事务和当前线程绑定,所以自己开了多线程自然会让事务失效。

Spring的事务管理器是通过ThreadLocal来保存每个线程的副本,从而实现线程安全的,再结合IoC和Aop实现高级声明式事务的功能,所以Spring的事务天然地和线程有着千丝万缕的联系。只能维护web应用的多线程,不支持多线程里的多线程。

其他方案:修改代码架构,把逻辑处理部分抽出来,放在另外一个service中,然后通过xxx.service的方法去调用(在事务范围外做的线程操作),这样就有了事务。

转载于:https://blog.51cto.com/daiyiyi/1771690

Spring事务与自定义多线程陷阱相关推荐

  1. 聊聊Spring事务失效的12种场景,太坑人了

    前言 对于从事java开发工作的同学来说,spring的事务肯定再熟悉不过了. 在某些业务场景下,如果一个请求中,需要同时写入多张表的数据.为了保证操作的原子性(要么同时成功,要么同时失败),避免数据 ...

  2. 详解spring事务失效和回滚失败的场景

    详解spring事务失效和回滚失败的场景 详解spring事务失效和回滚失败的场景 前言 一 .事务不生效 1.访问权限问题 2. 方法用final修饰 3.方法的内部调用 3.1 新加一个Servi ...

  3. java 封装事务_Spring之路(36)–事务很重要吗?Spring为何要封装事务?Spring事务有陷阱吗?...

    可以不使用事务吗 真的遇到过开发企业应用,但是不知道啥是事务的朋友. 好吧,我始终认为抛开性能.界面.易用性等方面不说,正确性应该是一个项目最基础的要求了. 所以,凡是企业应用,正儿八经有客户的系统, ...

  4. 手写 Spring 事务、IOC、DI 和 MVC

    Spring AOP 原理 什么是 AOP? AOP 即面向切面编程,利用 AOP 可以对业务进行解耦,提高重用性,提高开发效率 应用场景:日志记录,性能统计,安全控制,事务处理,异常处理 AOP 底 ...

  5. 每日一博 - 常见的Spring事务失效事务不回滚案例集锦

    文章目录 事务不生效 方法内部调用 修复方法一 : [新加一个Service方法] 修复方法二:[在该Service类中注入自己] 修复方法三:[通过AopContent类]<---- 推荐 访 ...

  6. 事务嵌套问题_注意Spring事务这一点,避免出现大事务

    背景 本篇文章主要分享压测的(高并发)时候发现的一些问题.之前的两篇文章已经讲述了在高并发的情况下,消息队列和数据库连接池的一些总结和优化,有兴趣的可以在我的公众号中去翻阅.废话不多说,进入正题. 事 ...

  7. spring事务失效的11种场景

    1 访问权限问题: java的访问权限有4种:private.default.protected.public,它们的权限从左到右,以此变大.如果在开发中,将事务方法定义了错误的访问权限,则事务功能会 ...

  8. Spring事务失效场景

    1.Spring事务最终依赖的数据库的事务,如果用的是mysql的话,执行引擎要是innodb;因为只有innoDB 支持事务. 2.Spring的事务是原理是aop,所以加事务所在bean是要Spr ...

  9. Spring事务(Transaction)的传播(propagation)属性以及隔离(isolation)级别

    目录 1 Spring事务 1.1 定义 1.1.1 事务概念 1.1.2 事务分类 1.2 声明式事务 1.2.1 @EnableTransactionManagement工作原理 1.2.2 实现 ...

最新文章

  1. 三位数除以两位数竖式计算没有余数_二年级数学第三十课:有余数的除法 例4 试商...
  2. 【转】Android 4.3源码的下载和编译环境的安装及编译
  3. 2015年度打榜之数据备份硬件
  4. 初识Tcl(十一):Tcl 命名空间
  5. 大型“数码管”解决方案:用了 28 个舵机的时钟,到底有什么特别?
  6. js html 追加span内容,使用JavaScript显示SPAN的内容
  7. 2021年中总结汇报PPT
  8. 优秀博客链接(linux c/c++ java go php android ios 前端 j2ee windows linux 算法 ACM 深度/机器学习 AI opencv nlp)
  9. 26. 删除排序数组中的重复项 golang
  10. C语言实现去掉字符串中指定的字符
  11. 计算机辅助齿轮图标注,机械CAD齿轮画法
  12. 123_Power PivotPower BI DAX函数说明速查
  13. Kotlin学习笔记18 反射Part2
  14. 使用Keras实现鸢尾花分类
  15. [数据恢复答疑]用partition manager导致资料丢失怎么办?
  16. C#编程(四十)----------运算符重载
  17. 纯CSS3浮雕质感的立体文字旋转动画
  18. SQL语句批量替换某个指定的字符串
  19. java发送带附件的电子邮件
  20. Python自动化体系学习思维导图、知识点整理

热门文章

  1. 3d max 的 Gamma 和 LUT 首选项学习
  2. oracle批处理脚本学习总结
  3. 图解opengl 3D 图形绘制实例
  4. cnblog项目--20190309
  5. HTML td 标签的 colspan 属性
  6. mysql 的 VARCHAR VARCHAR2
  7. curl访问nagios中Host Status Details For All Host Groups页面的方法
  8. 在windows安装配置Git开发环境
  9. SilverLight企业应用框架设计【二】框架画面
  10. extjs 重设autoHeight