2

我听说许多框架(Struts、Spring、Hibernate、AspectJ)在内部使用字节码操作。使用字节码操作的令人信服的理由是什么?我期待每个特定框架至少有一个用例的答案。

4

1 回答 1

12

这些框架操纵你的类的字节码,以便它们可以添加对它们的特性的支持。例如,Hibernate 可以编码到类的 getter/setter 中,以帮助它跟踪实体何时更新(变脏)和/或返回包含代码以进行延迟加载的子实体的代理。

Aspectj 操作字节码以添​​加您要求它强制执行的方面。例如,如果您想在类的所有方法中添加建议以在调用它们时进行记录,那么 aspectj 可以将字节码(执行该记录)添加到每个方法中。

于 2011-01-31T05:24:38.827 回答