ES 八月 13, 2021

JDK动态代理生成的CLASS文件

文章字数 1.5k 阅读约需 1 mins. 阅读次数 0

JDK动态代理生成的CLASS文件查看

在学习代理模式的时候,想看看动态代理生成的文件长啥样.只需要在程序启动时设置生成配置.

源码中可以看出文件输出是通过 saveGeneratedFiles 控制的.

img

而saveGeneratedFiles的生成是通过GetBooleanAction方法读取系统变量由来.

private static final boolean saveGeneratedFiles = (Boolean)AccessController.doPrivileged(new GetBooleanAction("sun.misc.ProxyGenerator.saveGeneratedFiles"));

所以只需要设置环境变量sun.misc.ProxyGenerator.saveGeneratedFiles为true即可.

如何新增环境变量.

方法一:idea启动配置vm参数

-Dsun.misc.ProxyGenerator.saveGeneratedFiles=true

imgidea 传入vm参数 用-D

方法二:程序启动入口写入配置参数

System.getProperties().put("sun.misc.ProxyGenerator.saveGeneratedFiles", "true");

版本注意:

在jdk1.8及以前参数名称为:sun.misc.ProxyGenerator.saveGeneratedFiles

在jdk1.8以后参数名为:jdk.proxy.ProxyGenerator.saveGeneratedFiles

如何确认版本可以在idea中双击shift搜索saveGeneratedFiles.查看源码得知.

0%