我们今天要重头开始讲Spring事务的原理,AOP的原理知道是怎么实现出来的吗,AOP的原理是怎么实现出来的吗,有没有谁知道,
是怎么实现的,不是工厂方法,你们可能有人知道,是静态代理和动态代理,不过在这边我要讲一下,首先大家记住,静态代理是需要生成
目标代理对象的,动态代理是不需要生成目标代理对象的,这个时候我们讲一下,这个静态代理我们一般用的比较少,他写起来比较
麻烦,有很多代理类,这肯定是不推荐大家使用的,不推荐的,我在之前很早的时候,我就已经讲过,设计模式我们不是已经讲完了吗,
是讲过代理设计模式的,动态代理讲的非常非常深了,动态代理有分为,比较主流的几种,JDK动态代理,还有什么呢,叫做CGLIB,
你们能不能说一下JDK动态代理和CGLIB的区别,CGLIB和动态代理的区别,JDK需要接口,CGLIB通过子类进行实现,这是最基本的,
JDK他确实是需要接口的,CGLIB动态代理只需要子类实现,那么在这边我问一下你们,记住一点啊,CGLIB它是基于ASM字节码进行
包装的一个类库,这是我要给你们讲的一个类库,ASM干嘛用的,有没有谁知道的,ASM绝对说过的,只是没有讲过这个框架,ASM做
什么目的的,叫做字节码,它是怎么做的呢,对字节码做新增和修改,都是对字节码做修改,他底层是通过ASM做包装的,专门去做
代理的,底层是基于ASM实现的,大家在这边一定要记住,它是基于反射实现的,所以这个区别是比较大的,但是字节码效率比反射的
效率要高一点,比较推荐使用CGLIB,已经把原理回顾了一遍,我还是大体给你演示一遍,把代理设计模式大体的演示一遍
代理模式应用场景
SpringAOP、事物原理、日志打印、权限控制、远程调用、安全代理 可以隐蔽真实角色
代理的分类
静态代理(静态定义代理类)
动态代理(动态生成代理类)
Jdk自带动态代理
Cglib 、javaassist(字节码操作库)