cglib 辅助

不可否认,每项技术总会存在弊端,比如cglib,导致jvm Permanet Generation 不再稳定,如果配置不当,并且大量生成cglib代理类的时候,出现out of memory;
又或者,调试代理类的时候,相当不方便...
但是cglib有他可喜的一面,底层采用asm,动态生成字节码,比jdk proxy效率高了不知多少;为spring aop提供了底层的一种实现;hibernate使用cglib动态生成DO/PO (接口层对象)字节码...应用是何等的广泛.
为java静态语言提供了动态特性(当然,底层是asm功劳),多么可喜.

一直没找到这个动态生成的class我也就无法对它进行反编译,莫非是直接放在jvm的堆内存了吧?那该如何获取它并反编译它呢。。。
debug,将动态生成class的字节码 输入到文件中,然后反编译得到的. 

 

我发现我真是傻呀,竟然一直去寻找这样一种方式:“如何通过Class实例对象得到class字节码,然后将字节码写入文件再反编译,如此来获取源码”。。。
哈哈。。。真是笨得要命哦~
反倒忘记了cglib的source code了,嘻嘻。。。直接修改net.sf.cglib.core.AbstractClassGenerator.create(Object key)方法,将cglib取到的字节码写入文档再反编译不就ok了么~

ps. javassist貌似不行  回复  更多评论   

# re: CGlib简单介绍 2010-10-09 09:27 stone2083

@pyzhu
修改源码也是一种方法 :)
我是在debug的时候,Variables窗体中,编写java代码,拿到class变量信息做自己的处理

system.setProperty(DebuggingClassWriter.DEBUG_LOCATION_PROPERTY, "指定输出目录"); 

详见: http://www.javaeye.com/topic/799827  

 

你可能感兴趣的:(cglib 辅助)