选择哪个库在运行时生成类

时间:2011-06-21 13:12:09

标签: java proxy bytecode javassist cglib

我需要在运行时扩展类,特别是检测对类状态所做的更改。如果可能的话,我希望能够通过截取字段分配来检测更改,如果没有拦截设置器就可以。我应该使用哪个库?为什么? javassist或cglib还是? java.lang.reflect.Proxy可以实现吗?你能比较这些图书馆吗? 感谢。

1 个答案:

答案 0 :(得分:2)

要拦截界面中定义的setter,您可以使用Proxy。

要拦截方法调用,您可以使用像AspectJ这样的AOP。

但是,为了捕获字段分配,我会使用字节代码库,如ASM,BCEL,cglib或javassist。我更喜欢ASM,它很快并且有一些工具可以使字节代码更容易编写。