实现spring的事物管理

事务,是描述一组操作的抽象,比如对数据库的一组操作,要么全部成功,要么全部失败。事务具有4个特性:Atomicity(原子性),Consistency(一致性),Isolation(隔离性),Durability(持久性)

要实现spring的事物管理,需要明白几点:

1、java的反射(主要用jdk 的动态代理实现DAO操作的增加即AOP);

2、无锁线程安全(参考spring的源码 使用ThreadLocal 实现无锁的资源共享)

下面看下代码:工程目录:


1、ConnectionHolder.java 主要持有connection对象;


2、SingleThreadConnetion.java:


3、下面实现如何根据注解来判断是否开启事物;

先定义一个注解:


代码中可以通过method.isAnnotationPresent(MyTransaction.class)来判断是否开启事物;后面Test的时候有代码:

如果有该注解那么:

定义一个事务管理器:


把事物单独提取出来然后使用aop 增加到需要使用事物的地方;

JDK的动态代理需要主要是实习InvocationHandler 接口 实现其中的invoke 方法,该方法第一个参数使我们需要增强的接口对象;实际上这个handler相当于一个代理

jdk 的动态是基于接口的代理,所以先要定义一个接口:

最后是测试啦:


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,881评论 18 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,941评论 6 342
  • 什么是Spring Spring是一个开源的Java EE开发框架。Spring框架的核心功能可以应用在任何Jav...
    jemmm阅读 16,549评论 1 133
  • 首先,在2017.10.04这天,向所有人说一句“中秋快乐”。 说起中秋,我好像只能想起初三的中秋。...
    年初六阅读 350评论 3 2
  • 社交时我们需要注意技巧,才能提高控场能力。 首先,观察判断一个人的性格。如果对方是热情的人,在与之交往时也把自己表...
    wukaili阅读 217评论 0 2