Почему популярные фреймворки используют манипуляции с байт-кодом внутри? - PullRequest
2 голосов
/ 31 января 2011

Я слышал, что многие фреймворки (Struts, Spring, Hibernate, AspectJ) используют манипуляции с байт-кодом внутри.Каковы веские причины использовать манипуляции с байт-кодом?Я ожидаю ответа по крайней мере с вариантом использования для каждой конкретной структуры.

1 Ответ

11 голосов
/ 31 января 2011

Эти платформы манипулируют байт-кодом ваших классов, чтобы они могли добавить в них поддержку своих функций. Например, Hibernate может кодировать в методы получения / установки класса, чтобы помочь ему отследить, когда объект был обновлен (испачкан), и / или вернуть прокси-объекты дочерних объектов, которые содержат код для выполнения отложенной загрузки.

Aspectj манипулирует байт-кодом, чтобы добавить аспекты, которые вы запросили, чтобы обеспечить их выполнение. Например, если вы хотите добавить рекомендации ко всем методам класса для записи в журнал, когда они вызываются, aspectj может добавить байт-код (который выполняет эту регистрацию) к каждому методу.

...