静态代理:由程序员创建或特定工具自动生成源代码,再对其编译。在程序运行前,代理类的.class文件就已经存在了。
动态代理:在程序运行时,运用反射机制动态创建而成。
使用jdk的反射机制,创建对象的能力,创建的是代理类的对象。而不用你创建类文件。不用写java文件。
**动态:**在程序执行时,调用JDK提供的方法才能创建代理类的对象。
jdk动态代理,必须有接口,目标类必须实现接口,没有接口时,需要使用cylib动态代理。
实现动态代理的方式通常有JDK动态代理机制和CGLIB动态代理机制。
其中JDK动态代理机制是通过Java反射机制在程序运行时动态生成字节码,
而CGLIB动态代理机制则是通过继承目标类并生成其子类的方式实现动态代理。
因此,事物是动态代理是JDK动态代理还是CGLIB代理,需要根据具体实现方式来确定。如果是通过Java反射机制动态生成字节码,则是JDK动态代理;如果是通过继承目标类并生成其子类,则是CGLIB动态代理