java中的動態代理Proxy
阿新 • • 發佈:2019-01-08
動態代理是java語言的一個神奇的地方,不是很好理解,下面來看看關鍵的地方。
InvocationHandler 是一個介面,官方文件解釋說,每個代理的例項都有一個與之關聯的 InvocationHandler 實現類,如果代理的方法被呼叫,那麼代理便會通知和轉發給內部的 InvocationHandler 實現類,由它決定處理。
public interface InvocationHandler { public Object invoke(Object proxy, Method method, Object[] args) throws Throwable; }
InvocationHandler 內部只是一個 invoke() 方法,正是這個方法決定了怎麼樣處理代理傳遞過來的方法呼叫。
proxy 代理物件
method 代理物件呼叫的方法
args 呼叫的方法中的引數
method.invoke(ldh, args); //這個方法是核心,很重要,呼叫了被代理物件的方
可以說,這兩個invoke方法就是動態代理的核心,動態代理還多了一個物件proxy。
附上兩篇文章:https://blog.csdn.net/pangqiandou/article/details/52964066,https://blog.csdn.net/briblue/article/details/73928350