动态代理
先知道什么是静态代理:
代理类再程序运行就已经存在,就是静态代理。 静态代理中的代理类和委托类会实现同一接口或是派生自相同的父类。
每个实体类都需要一个相对应的静态代理类继承或实现它,代理类可以自己加点东西,被其他类调用。缺点是每一个实体类或接口都需要代理类。繁琐。所以就要用到动态代理
动态代理:因为静态代理比较繁琐,所以使用动态代理,之中加入了反射机制,再运行时,用代理类去获取正在运行的实体类或接口,然后加点东西,被其他类调用。
动态代理的bug,当一个类被其他类调用时,这个类不会走代理。举例:A方法调用B方法进行增加操作(AB都进行添加),提交事务,B方法出错,但是都提交了,没有回滚,是因为B方法没有走代理(代理设定为提交事务),所以提交成功,A方法走代理。但是A方法没有出错,所以提交成功。