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

Nuw*_*age 2 java frameworks bytecode-manipulation

我听说很多框架(Struts,Spring,Hibernate,AspectJ)在内部使用字节码操作.使用字节码操作有哪些令人信服的理由?我期待每个特定框架至少有一个用例的答案.

jho*_*use 12

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

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