Javassist 学习总结/1.动态创建新类或新接口的二进制字节码 2. 动态扩展现有类或接口的二进制字节码(使用javassist动态注入代码)

要想将编译时不存在的类在运行时动态创建并加载,通常有两种策略:
1.      动态编译
2.      动态生成二进制字节码(.class)
对于第二种策略,实际上已经有诸多比较成熟的开源项目提供支持,如CGLib、ASM、Javassist等。这些开源项目通常都具备两方面的功能:
1.      动态创建新类或新接口的二进制字节码
2.      动态扩展现有类或接口的二进制字节码
其中,CGLib的底层基于ASM实现,是一个高效高性能的生成库;而ASM是一个轻量级的类库,但需要涉及到JVM的操作和指令;相比而言,Javassist要简单的多,完全是基于Java的API,但其性能相比前二者要差一些。
尽管如此,在性能要求相对低的场合,Javassist仍然十分有用,如JBoss中就调用了Javassist。


摘自:http://blog.csdn.net/sadfishsc/article/details/9999169
      http://www.iteye.com/topic/53740

猜你喜欢

转载自qi20088.iteye.com/blog/2305298
今日推荐