JDK Динамическое Прокси

Я знаю, что cglib-прокси работает по наследству целевого класса и переопределению методов целевого класса.

Может кто-нибудь сказать, как именно работает динамический прокси? Я знаю, что он использует интерфейс для прокси, но как именно вызов метода происходит через прокси?

1 ответ

Решение

С помощью Proxy.newProxyInstance() Вы можете попросить прокси, реализующий необходимые интерфейсы. Вам нужно пройти InvocationHandlerтоже, который вызывается каждый раз, когда вы вызываете любой прокси-метод. Затем в своем обработчике вы знаете, какой метод вызывается и его параметры, так что вы можете делать то, что хотите, включая использование целевого объекта.

Как Java справляется с этим? Ну, это сделано изначально, так же, как внутренности reflection и много основных функций. Таким образом, вы можете эмулировать это поведение, используя простую Java.

Расширенная информация здесь.

Другие вопросы по тегам