首页 > 代码库 > spring 代理 演变过程

spring 代理 演变过程

动态代理演变

拿JDBC开事务举例子

最初 写代码 每个CUD 都需要开启事务 所以出现很多累赘代码

因此提出静态代理的构想,把事务交给后台做,程序员只需要 调用update(sql)就行了,update(sql)方法里会开启事务相关操作

但是这不合理,因为如果有上千个CUD操作,得有上千个 函数里都开启关闭事务

所以提出了动态代理的构想,让动态代理执行CRUD中的事务行为,写的代码大大减少

但是这又有问题,比如上百个类,类中有上百个方法,有些方法需要事务,而有些方法不需要事务,则判断条件在动态代理的invoke中会非常臃肿,所以提出了切面的构想,切面就是执行代码之前要执行的,相当过滤器,在配置文件中配置切面,切面中有很多通知。

声明式事务的引出,因为事务的切面要程序员自己写,提出了声明式事务后,程序员只需要配置事务就行了,不需要自己写事务切面的相关代码,也不需要了解事务切面所需要的东西,把事务交给spring处理就可以了