保存Java代理框架生成的类文件。_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 保存Java代理框架生成的类文件。

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

 2013/12/6 21:26:53  琼海溜  程序员俱乐部  我要评论(0)
  • 摘要:Java的代理框架经常接触,但实际中我们看不到运行时生成的代理类,使用的代理框架是默认不会保存,如果想要查看,需要显式打开开关,可以通过以下2段代码做到。1、Java动态代理。让下面代码在代理类执行前执行,然后刷新项目,在其根目录下可以看到形如"$Proxy0.class"文件,再使用反编译工具解析即可。/***设置保存Java动态代理生成的类文件。**@throwsException*/publicstaticvoidsaveGeneratedJdkProxyFiles(
  • 标签:文件 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");
}

发表评论
用户名: 匿名