实现spring的事物管理

2017-10-12  本文已影响101人  Ludwigvan

事务,是描述一组操作的抽象,比如对数据库的一组操作,要么全部成功,要么全部失败。事务具有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 的动态是基于接口的代理,所以先要定义一个接口:

最后是测试啦:

上一篇下一篇

猜你喜欢

热点阅读