天天看點

JDK的動态代理~

什麼是代理:

代理是一種常用的設計模式。

JDK中的Proxy類:

位于java.lang.reflect 包下

在這個包下主要設及兩個類

(1)Interface InvocationHandler,在這個接口中隻有一個方法:

invoke(Object proxy, 方法 method, Object[] args) 
處理代理執行個體上的方法調用并傳回結果。
public object invoke(Object obj,Method method, Object[] args) 
           

(2)Proxy:該類即為動态代理類,

protected Proxy(InvocationHandler h):構造函數,用于給内部的h指派。

static Class getProxyClass (ClassLoaderloader, Class[] interfaces):獲得一個代理類,其中loader是類裝載器,interfaces是真實類所擁有的全部接口的數組。

static Object newProxyInstance(ClassLoaderloader, Class[] interfaces, InvocationHandler h):傳回代理類的一個執行個體,傳回後的代理類可以當作被代理類使用(可使用被代理類的在Subject接口中聲明過的方法)

參考文章:

JDK1.8

Java JDK 動态代理(AOP)使用及實作原理分析

https://blog.csdn.net/jiankunking/article/details/52143504

JDK和CGLIB動态代理差別:

https://blog.csdn.net/yhl_jxy/article/details/80635012