天天看點

java中對靜态代理和jdk代理的了解

  1. 靜态代理:在程式運作前就已經存在的編譯好的代理類是為靜态代理。首先,定義業務接口;其次,實作業務接口;然後,定義代理類并實作業務接口;最後便可通過用戶端進行調用。
  2. 動态代理:在程式運作期間根據需要動态建立代理類及其執行個體來完成具體的功能是為動态代理。
  3. spring中AOP基于兩種代理模式:JDK代理模式(需要目标對象實作接口),cglib代理模式(基于類的代理,無需實作接口)。
  4. 代理模式的目的就是為真實業務對象提供一個代理對象以控制對真實業務對象的通路,代理對象的作用有: 
  • 代理對象存在的價值主要用于攔截對真實業務對象的通路;
  • 代理對象具有和目标對象(真實業務對象)實作共同的接口或繼承于同一個類;
  • 代理對象是對目标對象的增強,以便對消息進行預處理和後處理。

1、靜态代理

Count.java接口:

java中對靜态代理和jdk代理的了解

CountImpl.java類:

java中對靜态代理和jdk代理的了解

代理類:

CountProxy.java類:

java中對靜态代理和jdk代理的了解

測試類:

Test.java類:

java中對靜态代理和jdk代理的了解

2、jdk動态代理

Count.java接口:

java中對靜态代理和jdk代理的了解

CountImpl.java類:

java中對靜态代理和jdk代理的了解

CountProxy.java類:

java中對靜态代理和jdk代理的了解

其中newProxyInstance()方法:源碼

java中對靜态代理和jdk代理的了解
java中對靜态代理和jdk代理的了解
java中對靜态代理和jdk代理的了解

Test.java類:

java中對靜态代理和jdk代理的了解