1. 程式人生 > >關於jdk動態代理+proxy引數作用的學習總結

關於jdk動態代理+proxy引數作用的學習總結

首先關於具體的原始碼分析,網上很多,在此不再記錄一次。

關於JDK動態代理的學習。首先先整明白了大體的思路,一個實現了某些介面的被代理類。一個實現了InvocationHandle的代理類,然後通過Proxy類下的靜態方法newProxyInstance進行織入產生一個融合了代理類和被代理類的真正的代理物件。

就我的理解而言,動態代理就是在執行的被代理物件的方法前後可以加上我們想加入的其他操作,如每個學生吃飯前都得刷卡,這個刷卡就是額外的其他操作,又像日誌一樣,我們每次操作都得記錄下該操作的時間,作者。等等。

這樣的話就需要把我們想加入的操作和被代理物件的方法融合。

 Proxy的newInstance方法就是來幹這事的,傳三個引數進去,它就給咱們返回了一個實現了和被代理類同樣的介面,並且在相應的方法裡呼叫了invoke方法的新的物件。

再者就是很多關於public Object invoke(Object proxy, Method method, Object[] args)中proxy作用的討論。

proxy代表返回的真正代理物件,該物件呼叫invoke時把自身傳了進來,也就是我們可以獲得該物件的引用並對其操作。