Skip to content

描述一下 Java 动态代理的运行原理

cxuan edited this page Sep 20, 2020 · 1 revision

动态代理是基于反射的代理,说基于反射的原因是代理类对象的生成时机是在程序运行过程中动态生成的,而代理类对象的生成需要经过两步,第一步是由底层的字节码生成器生成该代理类的Class字节码文件,然后通过该字节码文件利用反射生成代理类对象,所以我们在程序中无法感知到代理类的存在,它没有.java文件,直接生成了.class文件,我们可以利用文件下载的方式,将生成的代理类字节数组保存到本地,利用反编译工具还原出类的结构,可以看出基于JDK的动态代理继承了Proxy类,这也是为什么JDK动态代理必须实现接口的原因:Java的特性是单继承多实现;所以,CGLIB弥补了这一缺点,CGLIB可以代理大部分类,不需要强制实现一个接口…

Clone this wiki locally