为啥流行的框架在内部使用字节码操作?
Posted
技术标签:
【中文标题】为啥流行的框架在内部使用字节码操作?【英文标题】:Why do popular frameworks use bytecode manipulation internally?为什么流行的框架在内部使用字节码操作? 【发布时间】:2011-01-31 05:13:28 【问题描述】:我听说许多框架(Struts、Spring、Hibernate、AspectJ)在内部使用字节码操作。使用字节码操作的令人信服的理由是什么?我期待每个特定框架至少有一个用例的答案。
【问题讨论】:
【参考方案1】:这些框架会操纵您的类的字节码,以便它们可以在其中添加对其特性的支持。例如,Hibernate 可以编码到类的 getter/setter 中,以帮助它跟踪实体何时更新(变脏)和/或返回包含代码的子实体的代理以进行延迟加载。
Aspectj 操作字节码以添加您要求它强制执行的方面。例如,如果您想在类的所有方法中添加建议以在调用它们时进行记录,那么 aspectj 可能会向每个方法添加字节码(执行该记录)。
【讨论】:
是的,我明白你的意思,但是 Spring 框架和 struts2 如何在其框架中使用字节码操作以上是关于为啥流行的框架在内部使用字节码操作?的主要内容,如果未能解决你的问题,请参考以下文章