最近接到一个业务,其中我需要用做的就是插入用户数据到数据库,并发送短信给客户,所以我要保证一定是事务commit 之后,我才可以发送短信。

所以我查找spring 资料,发现 TransactionSynchronizationManager(事务同步管理器)可以满足我的需求,接下我演示我的实现过程。

1.定义事务回调的方法

/*** 事务回调执行* @author : lxq*/
public interface TransactionCallBackAction {/*** 普通事务回调*/void callback();
}

2.使用事务同步管理器,事务提交之后执行回调

@Component
public class TransactionCallBackService {public void execute(final TransactionCallBackAction action) {//判断Transaction对象是否处于活动状态if (TransactionSynchronizationManager.isActualTransactionActive()) {//建立新的Transaction对象用于执行回调TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {@Overridepublic void afterCommit() {// 事务提交后执行回调action.callback();}});} else {// 事务提交后执行回调action.callback();}}
}

3.在实战中的使用

spring 事务回调相关推荐

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

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

  2. Spring事务管理 与 SpringAOP

    1,Spring事务的核心接口 Spring事务管理的实现有许多细节,如果对整个接口框架有个大体了解会非常有利于我们理解事务,下面通过讲解Spring的事务接口来了解Spring实现事务的具体策略.  ...

  3. Spring事务管理(详解+实例)

    写这篇博客之前我首先读了<Spring in action>,之后在网上看了一些关于Spring事务管理的文章,感觉都没有讲全,这里就将书上的和网上关于事务的知识总结一下,参考的文章如下: ...

  4. Spring事务专题(四)Spring中事务的使用、抽象机制及模拟Spring事务实现

    前言 本专题大纲如下: 事务专题大纲 「对于专题大纲我又做了调整哈,主要是希望专题的内容能够更丰富,更加详细」,本来是想在源码分析的文章中附带讲一讲事务使用中的问题,这两天想了想还是单独写一篇并作为事 ...

  5. Spring 事务用法示例与实现原理

    关于事务,简单来说,就是为了保证数据完整性而存在的一种工具,其主要有四大特性:原子性,一致性,隔离性和持久性.对于Spring事务,其最终还是在数据库层面实现的,而Spring只是以一种比较优雅的方式 ...

  6. Spring的AOP和IOC是什么?使用场景有哪些?Spring事务与数据库事务,传播行为,数据库隔离级别

    Spring的AOP和IOC是什么?使用场景有哪些?Spring事务与数据库事务,传播行为,数据库隔离级别 AOP:面向切面编程. 即在一个功能模块中新增其他功能,比方说你要下楼取个快递,你同事对你说 ...

  7. Spring事务原理一探

    概括来讲,事务是一个由有限操作集合组成的逻辑单元.事务操作包含两个目的,数据一致以及操作隔离.数据一致是指事务提交时保证事务内的所有操作都成功完成,并且更改永久生效:事务回滚时,保证能够恢复到事务执行 ...

  8. 【技术干货】Spring事务原理一探

    本篇文章是网易云信研发工程师对Spring事务实现原理及实现的研究和总结,分享给大家,希望和大家共同探讨. 事务是一个由有限操作集合组成的逻辑单元.事务操作包含两个目的,数据一致以及操作隔离.数据一致 ...

  9. 事务里面捕获异常_三问Spring事务:解决什么问题?如何解决?存在什么问题?...

    1. 解决什么问题 让我们先从事务说起,"什么是事务?我们为什么需要事务?". 事务是一组无法被分割的操作,要么所有操作全部成功,要么全部失败.我们在开发中需要通过事务将一些操作组 ...

最新文章

  1. linux安装vi 插件,Ubuntu上Vim安装NERDTree插件的详细操作步骤
  2. 如何使用jQuery按名称选择元素?
  3. Java可以跨平台的原因
  4. python 递归结束条件_python递归(如果条件满足,为什么程序不退出一次?)
  5. Atom相关资料整理
  6. ASP.NET中进行消息处理(MSMQ) 一
  7. sql2005新增排序方法
  8. c++ 链表_算法学习笔记 - 链表 - 单链表的粗糙实现
  9. Jar包部署-指定jsp打包配置
  10. Java领域的对象如何传输-如何解决报错的问题呢?
  11. 正则表达式-我在学习过程中研究过的
  12. 【最全最详细】使用publiccms实现动态可维护的导航菜单栏
  13. java的多态怎么理解_JAVA多态的理解
  14. mysql 编译安装与rpm安装的区别_编译安装与RPM安装的区别
  15. Unity3d AR 增强现实技术列表(2016年3月31日更新)
  16. 接口大师(PhalApi专业版)项目实战经验分享,快速开发项目的新方式
  17. 利用WireShark破解网站密码
  18. 2023年电气,电子与信息工程国际会议(ISEEIE-2023)
  19. 硬件工程师的系统开发之路
  20. ML-Agents案例之双人足球

热门文章

  1. CSS3 画皮卡丘
  2. 音响的灵魂! 世界顶级扬声器品牌介绍
  3. 如何在 3dMax 中制作游戏中的战斧模型?
  4. Python自学指南-你好啊!Python
  5. 调整DOSBox的窗口大小:跨过三连坑
  6. 股票数据API接口文档说明
  7. CUT&RUN——检测蛋白-DNA相互作用的强大通用技术
  8. windows XP 安装Sql Server 2000企业管理器无法打开(MMC)的解决方法(亲试,可用)
  9. [ZJOI2005]沼泽鳄鱼
  10. PostgreSQL 中的单引号与双引号