1. 程式人生 > >動態代理是基於什麼原理?

動態代理是基於什麼原理?

反射機制是java語言提供的一種基礎功能,賦予程式在執行時自省的能力。通過反射我們可以直接操作類或者物件,比如獲取某個物件的類定義,獲取類宣告的屬性和方法,呼叫方法或者構造物件,甚至可以執行時修改類定義。

動態代理是一種方便執行時動態構建代理、動態處理代理方法呼叫的機制,很多場景都是利用類似機制做到的,比如用來包裝RPC呼叫、面向切面的程式設計。

實現動態代理的方式很多,比如JDK自身提供的動態代理,就是主要利用了上面提到的反射機制。還有其他的實現方式,比如利用傳說中更高效能的位元組碼操作機制,類似ASM、aglib、Javassist等。