事务管理自定义事务管理器

public class DBUtils {//获取链接//在当前线程中存储所使用的链接private ThreadLocal<Connection> threadLocal = new ThreadLocal<>();//注入数据源private DataSource dataSource;public void setDataSource(DataSource dataSource) {this.dataSource = dataSource;}//获得链接public Connection getCurrentConnection() throws SQLException {Connection connection = threadLocal.get();if (connection == null){connection = dataSource.getConnection();threadLocal.set(connection);}return connection;}//释放连接public void close(){threadLocal.remove();}}

//事务管理类
public class TransactionManager {@Autowired//对于静态属性的注入 必须借用set方法 而且setter不能是静态方法private DBUtils dbUtils;public void setDbUtils(DBUtils dbUtils) {this.dbUtils = dbUtils;}//开启事务@Before(value = "pt()")public void beginTransaction(){System.out.println("开启事务");try {Connection connection = dbUtils.getCurrentConnection();System.out.println(connection);dbUtils.getCurrentConnection().setAutoCommit(false);System.out.println(connection.getAutoCommit());} catch (SQLException e) {e.printStackTrace();}}//提交事务public void commitTransaction(){System.out.println("提交事务");try {Connection connection = dbUtils.getCurrentConnection();System.out.println(connection);System.out.println(connection.getAutoCommit());dbUtils.getCurrentConnection().commit();} catch (SQLException e) {e.printStackTrace();}}//回滚事务public void rollbackTransaction(){System.out.println("回滚事务");try {dbUtils.getCurrentConnection().rollback();} catch (SQLException e) {e.printStackTrace();}}//释放连接public void release(){System.out.println("关闭连接");try {dbUtils.getCurrentConnection().close();dbUtils.close();} catch (SQLException e) {e.printStackTrace();}}public void around(ProceedingJoinPoint proceedingJoinPoint){Object[] args = proceedingJoinPoint.getArgs();Object result = null;try {beginTransaction();//调用需要增强的方法result = proceedingJoinPoint.proceed(args);commitTransaction();} catch (Throwable throwable) {rollbackTransaction();throwable.printStackTrace();}finally {release();}}
}

事务管理自定义事务管理器相关推荐

  1. 自定义事务管理器TransactionManager对象

    自定义事务管理器TransactionManager对象 以aop思想,实现事务管理切面 1. DataSource注册容器 <?xml version="1.0" enco ...

  2. .NET简谈自定义事务资源管理器

    在上一篇文章"NET简谈事务.分布式事务处理"中我大概总结了关于.NET中的事务处理方式和结合了WCF框架的简单应用.在事务性操作中我们的重点是能将数据进行可逆化,说白了就是能保证 ...

  3. java元婴期(21)----java进阶(spring(5)---事务管理AOP事务管理(全自动)spring整合Junit)

    事务管理 事务:一组业务操作ABCD,要么全部成功,要么全部不成功. 特性:ACID 原子性:整体 一致性:完成 隔离性:并发 持久性:结果 隔离问题: 脏读:一个事务读到另一个事务没有提交的数据 不 ...

  4. easyswoole事务mysql_easyswoole ORM 事务操作管理

    事务操作 DbManager 链接管理器提供 DbManager操作事务 传参说明(代码示例看下文) 参数类型 参数说明 string或array 值为connectionName,代表当前协程下连接 ...

  5. MyBatisPlus 开启事务并交由 Springboot 管理

    MyBatisPlus 开启事务并交由 Springboot 管理 前言 一.什么是事务 二.开启方法 总结 前言 网络上对于事务的解释都太过官方,太过晦涩,导致我们都看不懂,我来用人话解释一下什么是 ...

  6. Spring事务和Aspects框架管理事务,看这篇就够了!(简单易懂!)

    Spring事务和Aspects框架管理事务的用法 一.事务的介绍 1.1什么是事务 1.2事务的四大特性 二.事务的隔离级别以及导致的问题介绍 2.1隔离级别介绍 2.2导致的问题介绍 2.2.1脏 ...

  7. 事务管理(事务控制方式)

    事务控制方式 编程式 声明式(XML) 声明式(注解) 案例介绍 银行转账业务说明 银行转账操作中,涉及到从A账户到B账户的资金转移操作.数据层仅提供单条数据的基础操作,未涉及多账户间的业务操作. 新 ...

  8. 楼梯在SQL Server事务日志管理,三级:事务日志,备份和恢复(16周翻译)

    楼梯在SQL Server事务日志管理,三级:事务日志,备份和恢复 通过托尼•戴维斯,2011/09/07 该系列 本文是楼梯系列的一部分:楼梯在SQL Server事务日志管理 当一切都很顺利,没有 ...

  9. Spring Cloud笔记(8)使用Seata管理分布式事务

    分布式事务介绍 所谓事务,就是一系列业务操作构成的独立的执行单元.比如用户购买商品下单的行为,需要执行创建订单,扣减商品库存的两个不同的数据库操作,这就是一个事务.事务最重要的特性就是要支持原子性,要 ...

最新文章

  1. Java面试之Java基础下册(含答案)
  2. django博客项目8:文章详情页
  3. 新学语言python和JS
  4. 字符串相加/大数相加(代码极短)
  5. 网易云携手美云智数掀起企业移动信息化发展新浪潮
  6. Spark Streaming(四)kafka搭建(单节点,单broker)
  7. vue复选框CheckBox清空选中的值
  8. Scratch3 二次开发系列
  9. ModelArts黑科技揭秘|模型智能评估、诊断,让模型来个“体检
  10. 07-R语言jiebaR包的分词学习
  11. 今日恐慌与贪婪指数为66 贪婪程度有所缓解
  12. Python中的用for,while循环遍历文件实例
  13. 【渝粤教育】国家开放大学2018年春季 3922T汽车运用基础 参考试题
  14. java 服务器时间 jvm_手动设置jvm时间改为第8时区的时间JVM虚拟机时区设置问题,java日期工具类各种解决不好使,很麻烦...
  15. 算法导论第八章练习参考答案
  16. 图像特征的特点及其常用的特征提取与匹配方法
  17. 千年3步法外挂 千年3脚本 千年3外挂 千年3最新外挂
  18. hi3519模组测试
  19. 计算机快速看图教程,CAD快速看图使用电脑版软件操作教程
  20. php蘑菇街商城源码,php源码:dedecms精仿蘑菇街(mogujie.com)源码,时尚购物社区源码...

热门文章

  1. Linux 浮点数运算
  2. 使用Unity的SimViz解决方案模板快速启动自主仿真开发
  3. 推荐一款ios软件叫你出我猜
  4. Typora主题代码更改(引用块颜色, 标题样式和颜色, 行内代码样式)
  5. 2018沈阳网络赛D
  6. rabbitmq报错无法连接解决方案
  7. 独立产品灵感周刊 DecoHack #041 - 那些独立开发者是怎么养活自己的
  8. mysql分表id维护_MySQL分表自增ID解决方案
  9. 用 HTML 元素实现自定义的滚动条
  10. 银行借助纵向联邦学习 集中化进行长尾客群的精准营销