读书人

浅析“署理模式”实现spring事务管理

发布时间: 2012-08-28 12:37:01 作者: rapoo

浅析“代理模式”实现spring事务管理
模拟用户调用:



RealSubject 的代码:


--------------------------------
DynamicSubject 中我们可以模拟数据库操作;实现事务管理;

初级开发者会犯一个错误:直接从SPRING中配置的DATASOURCE中取得CONNECT数据库连接,这样会导致事务失效;
因为你取得的连接的AUTOCOMMIT 是TRUE ;这样事务就没法交给SPRING进行管理啦。

用代理的作用其实就是控制CONNECT数据库连接,通过代理我们可以控制数据库操作的提交和回滚;

另外早期的SPRING事务管理必须是基于接口的,当现在改变啦!为啥必须基于接口?看看这段代码:


Proxy根据InvocationHandler接口的实现类中的内容生成最后供用户调用的Subject接口 ,

newProxyInstance 中有个参数必须是接口的集合,这个就是原因



//生成RealSubject 的代理类 Subject subject = (Subject) Proxy.newProxyInstance(rsClassLoader,rsInterfaces, ds);


读书人网 >软件架构设计

热点推荐