黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

Spring框架教程
Spring IOC控制反轉(zhuǎn)
Spring AOP面向切面編程
Spring集成MyBatis
Spring事務
Spring與Web

Spring動態(tài)代理

動態(tài)代理作用:功能增強和控制訪問

JDK動態(tài)代理

動態(tài)代理是指,程序在整個運行過程中根本就不存在目標類的代理類,目標對象的代理對象只是由代理生成工具(不是真實定義的類)在程序運行時由 JVM 根據(jù)反射等機制動態(tài)生成的。代理對象與目標對象的代理關系在程序運行時才確立。

對比靜態(tài)代理,靜態(tài)代理是指在程序運行前就已經(jīng)定義好了目標類的代理類。代理類與目標類的代理關系在程序運行之前就確立了。

動態(tài)代理的實現(xiàn)方式常用的有兩種:使用 JDK 的 Proxy,與通過 CGLIB 生成代理。

Jdk 的動態(tài)要求目標對象必須實現(xiàn)接口,這是 java 設計上的要求。

從 jdk1.3 以來,java 語言通過 java.lang.reflect 包提供三個類支持代理模式 Proxy, Method和 InovcationHandler。

● 通過 JDK 的 java.lang.reflect.Proxy 類實現(xiàn)動態(tài)代理,會使用其靜態(tài)方法

newProxyInstance(),依據(jù)目標對象、業(yè)務接口及調(diào)用處理器三者,自動生成一個動態(tài)代理對象。

public static newProxyInstance ( ClassLoaderloader, Class[]interfaces, InvocationHandlerhandler)

loader:目標類的類加載器,通過目標對象的反射可獲取

interfaces:目標類實現(xiàn)的接口數(shù)組,通過目標對象的反射可獲取

handler:調(diào)用處理器。

● InvocationHandler 是個接口,其具體介紹如下:

實現(xiàn)了 InvocationHandler 接口的類用于加強目標類的主業(yè)務邏輯。這個接口中有一個方法 invoke(),具體加強的代碼邏輯就是定義在該方法中的。程序調(diào)用主業(yè)務邏輯時,會自動調(diào)用 invoke()方法。

//Object proxy:代理對象

//Method m :調(diào)用的方法

//Object [] args: 調(diào)用方法的參數(shù)

public Object invoke(Object proxy, Method m, Object[] args)

● Method 類對象,該類有一個方法也叫 invoke(),可以調(diào)用目標類的目標方法。

這兩個 invoke()方法,雖然同名,但無關。

public Object invoke ( Object obj, Object... args)

obj:表示目標對象args:表示目標方法參數(shù),就是其上一層 invoke 方法的第三個參數(shù)

CGLIB動態(tài)代理

CGLIB(Code Generation Library)是一個開源項目。是一個強大的,高性能,高質(zhì)量的 Code生成類庫,它可以在運行期擴展 Java 類與實現(xiàn) Java 接口。它廣泛的被許多 AOP 的框架使用,例如 Spring AOP。

使用 JDK 的 Proxy 實現(xiàn)代理,要求目標類與代理類實現(xiàn)相同的接口。若目標類不存在接口,則無法使用該方式實現(xiàn)。但對于無接口的類,要為其創(chuàng)建動態(tài)代理,就要使用 CGLIB來實現(xiàn)。

CGLIB 代理的生成原理是生成目標類的子類,而子類是增強過的,這個子類對象就是代理對象。所以,使用 CGLIB 生成動態(tài)代理,要求目標類必須能夠被繼承,即不能是 final 的類。

CGLIB 經(jīng)常被應用在框架中,例如 Spring ,Hibernate 等。cglib 的代理效率高于 Jdk。

項目中直接使用動態(tài)代理的地方不多。一般都使用框架提供的功能。

● 導入 jar

 

● 定義目標類

SomeSerivce.java ,有 String doSome()方法

● 定義調(diào)用處理器,實現(xiàn) MethodInterceptor 接口

● 定義代理工廠類,創(chuàng)建代理對象

● 定義客戶端類

 

全部教程
主站蜘蛛池模板: 亚洲一区二区在线免费观看 | 亚洲一区二区三区香蕉 | 国产精品久久久久久久久免费观看 | 三级黄色一级视频 | 动漫美女h黄18动漫免费观看 | 欧美在线综合 | 九九精品视频一区二区三区 | 国产日韩亚洲欧美 | 日韩毛片在线 | 久久国产免费 | 欧美国产日韩在线播放 | 久久激情影院 | 国产成人在线观看免费网站 | 狠狠躁夜夜躁人人爽天天天天 | 特级一级毛片视频免费观看 | 天天精品在线 | 欧美一级特黄啪啪片免费看 | 国产亚洲一区二区精品张柏芝 | 国产色视频在线观看免费 | 理论片中文字幕在线精品 | 日韩免费大片 | 免费观看黄色 | 精品精拍国产日韩26u | 久久久久久久久综合影视网 | 国产一级特黄毛片 | 日本中文字幕在线播放 | 色站在线| 啊啊啊毛片| 伊人精品国产 | 国产a v高清一区二区三区 | 日韩黄色一级视频 | 91无套极品外围在线播放 | 亚洲国产黄色 | 最新亚洲一区二区三区四区 | 日本资源网 | 看黄色一级视频 | 一级全黄视频 | 操操日日 | 国产精品1页| 日本成片免费高清 | 亚洲视频二 |