Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我听说许多框架(Struts、Spring、Hibernate、AspectJ)在内部使用字节码操作。使用字节码操作的令人信服的理由是什么?我期待每个特定框架至少有一个用例的答案。
这些框架操纵你的类的字节码,以便它们可以添加对它们的特性的支持。例如,Hibernate 可以编码到类的 getter/setter 中,以帮助它跟踪实体何时更新(变脏)和/或返回包含代码以进行延迟加载的子实体的代理。
Aspectj 操作字节码以添加您要求它强制执行的方面。例如,如果您想在类的所有方法中添加建议以在调用它们时进行记录,那么 aspectj 可以将字节码(执行该记录)添加到每个方法中。