为什么流行的框架在内部使用字节码操作?

发布于 2024-10-15 04:54:28 字数 99 浏览 1 评论 0原文

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

I heard that many frameworks (Struts, Spring, Hibernate, AspectJ) use bytecode manipulation internally. What are the compelling reasons to use bytecode manipulation? I'm expecting a answer with at least a use-case for each particular framework.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

哑剧 2024-10-22 04:54:28

这些框架操纵类的字节码,以便它们可以向其中添加对其功能的支持。例如,Hibernate 可以将代码写入类的 getter/setter 中,以帮助它跟踪实体何时已更新(变脏)和/或返回包含延迟加载代码的子实体的代理。

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

These frameworks manipulate the bytecode of your classes so that they can add support for their features into them. For example, Hibernate may code into getters/setters of a class in order to help it track when the entity has been updated (become dirty) and/or to return proxies of sub-entities that contain code to do lazy-loading.

Aspectj manipulates bytecode in order to add the aspects that you have requested it to enforce. For example, if you want to add advice to all the methods of a class to log when they are invoked, then aspectj may add bytecode (that performs that logging) to each method.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文