首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

封存Java代理框架生成的类文件

2013-12-11 
保存Java代理框架生成的类文件。Java的代理框架经常接触,但实际中我们看不到运行时生成的代理类,使用的代理

保存Java代理框架生成的类文件。

Java的代理框架经常接触,但实际中我们看不到运行时生成的代理类,使用的代理框架是默认不会保存,如果想要查看,需要显式打开开关,可以通过以下2段代码做到。

1、Java动态代理。让下面代码在代理类执行前执行,然后刷新项目,在其根目录下可以看到形如"$Proxy0.class" 文件,再使用反编译工具解析即可。

/**
* 设置保存Java动态代理生成的类文件。
*
* @throws Exception
*/
public static void saveGeneratedJdkProxyFiles() throws Exception {
     Field field = System.class.getDeclaredField("props");
    field.setAccessible(true);
    Properties props = (Properties) field.get(null);
    props.put("sun.misc.ProxyGenerator.saveGeneratedFiles", "true");
}

?

2、Cglib代理。让下面代码在代理类执行前执行,然后刷新项目,在指定目录dir下可以看到形如 "类名$$EnhancerByCGLIB$$数字.class" 文件,再使用反编译工具解析即可。

/**
* 设置保存Cglib代理生成的类文件。
*
* @throws Exception
*/
public static void saveGeneratedCGlibProxyFiles() throws Exception {
    Field field = System.class.getDeclaredField("props");
    field.setAccessible(true);
     Properties props = (Properties) field.get(null);
    System.setProperty(DebuggingClassWriter.DEBUG_LOCATION_PROPERTY, dir);//dir为保存文件路径
    props.put("net.sf.cglib.core.DebuggingClassWriter.traceEnabled", "true");
}

热点排行