首頁 > Java > java教程 > Java中關於動態代理原理分析

Java中關於動態代理原理分析

黄舟
發布: 2017-10-16 10:17:49
原創
1979 人瀏覽過

這篇文章主要介紹了Java 動態代理原理分析的相關資料,希望透過本文能幫助到大家,讓大家掌握動態代理的原理,需要的朋友可以參考下

Java動態代理原理分析

概要

AOP的攔截功能是由java中的動態代理來實現的。說穿了,就是在目標類別的基礎上增加切面邏輯,產生增強的目標類別(該切面邏輯或是在目標類別函數執行之前,或是目標類別函數執行之後,或是在目標類別中拋出例外執行時執行。Spring中的動態代理是使用Cglib進行實現的。

範例

需要代理程式的介面

public interface IHello { 
public void sayHello(); 
}
登入後複製

需要代理程式的類別


##
public class HelloImpl implements IHello { 
public void sayHello() { 
System.out.println(“Hello World…”); 
} 
}
登入後複製

呼叫處理器實作類別


public class ProxyHandler implements InvocationHandler { 
private Object target; 
public ProxyHandler(Object target) { 
this.target = target; 
} 
public Object proxyInstance() { 
return Proxy.newProxyInstance(target.getClass().getClassLoader(), 
target.getClass().getInterfaces(), this); 
} 
public Object invoke(Object proxy, Method method, Object[] args) 
throws Throwable { 
System.out.println(“aspect before … “); 
Object result = method.invoke(this.target, args); 
System.out.println(“aspect after … “); 
return result; 
} 
}
登入後複製

測試類別入口


#
public class Main { 
public static void main(String[] args) { 
ProxyHandler proxy = new ProxyHandler(new HelloImpl()); 
IHello hello = (IHello) proxy.proxyInstance(); 
hello.sayHello(); 
} 
}
登入後複製

Proxy 原始碼解析


#
newProxyInstance() 方法
登入後複製

省略了不關心的程式碼


public static Object newProxyInstance(ClassLoader loader, Class c){

}
登入後複製

以上是Java中關於動態代理原理分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
java可以做為web的後端嗎?
來自於 1970-01-01 08:00:00
0
0
0
安裝JAVA
來自於 1970-01-01 08:00:00
0
0
0
無法安裝java
來自於 1970-01-01 08:00:00
0
0
0
求救:JAVA加密的資料PHP解密
來自於 1970-01-01 08:00:00
0
0
0
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板