动态代理 是一种在运行时动态创建代理对象,动态地处理代理方法调用的机制。
实际上他是一种代理机制,代理可以视为对代理目标的一个封装,直接通过对代理来实现对目标代码大调用。
动态代理实现大两种方式 DK动态代理和cglib 字节码机制
1.JDK动态代理实际上是应用JDK的反射机制来实现的
反射机制 是通过Class类 和java.lang.reflect类 在运行时获得某个类的信息。比如通过java.lang.reflect中的Field,Method及Constructor类就可以获取类的相关信息。
public static Object newProxyInstance(ClassLoader loader, Class<?>[] interfaces, InvocationHandler h)
cglib是一种基于ASM的字节码生成库,用于生成和转换Java字节码.
而ASM是一个轻量但高性能的字节码操作框架。cglib是基于ASM的上层应用,对于代理没有实现接口的类,cglib非常实用。
https://juejin.im/post/5b69aa63f265da0f4a4e97e0#heading-12 参考