JDK Динамическое Прокси
Я знаю, что cglib-прокси работает по наследству целевого класса и переопределению методов целевого класса.
Может кто-нибудь сказать, как именно работает динамический прокси? Я знаю, что он использует интерфейс для прокси, но как именно вызов метода происходит через прокси?
1 ответ
С помощью Proxy.newProxyInstance()
Вы можете попросить прокси, реализующий необходимые интерфейсы. Вам нужно пройти InvocationHandler
тоже, который вызывается каждый раз, когда вы вызываете любой прокси-метод. Затем в своем обработчике вы знаете, какой метод вызывается и его параметры, так что вы можете делать то, что хотите, включая использование целевого объекта.
Как Java справляется с этим? Ну, это сделано изначально, так же, как внутренности reflection
и много основных функций. Таким образом, вы можете эмулировать это поведение, используя простую Java.
Расширенная информация здесь.