JAVA中的静态代理、动态代理以及CGLIB动态代理总结
代理模式是java中最常用的设计模式之一,尤其是在spring框架中广泛应用。对于上述三种代理模式,分别进行说明。在程序运行之前,class已经存在。这同样存在局限性,因此,为了解决这个问题,出现了第三种代理方式:cglib代理。CGLib采用了非常底层的字节码技术,其原理是通过字节码技术为一个类创建子类,并在子类中采用方法拦截的技术拦截所有父类方法的调用,顺势织入横切逻辑。JDK动态代理与CGLib动态代理均是实现Spring AOP的基础。cglib动态代理目标类通用代理类:测试类执行结果:代理对象的生成过程由Enhancer类实现,大概步骤如下:1、生成代理类Class的二进制字节码;2、通过Class.forName加载二进制字节码,生成Class对象;3、通过反射机制获取实例构造,并初始化代理类对象。