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

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

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


person deepakraut    schedule 01.10.2012    source источник
comment
по этой ссылке есть хорошее объяснение проксирования blog.frankel.ch/tag/proxy   -  person deepakraut    schedule 27.11.2012


Ответы (1)


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

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

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

person sinuhepop    schedule 01.10.2012