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

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)建代理對象

● 定義客戶端類

 

全部教程
主站蜘蛛池模板: freexxxxⅹhd18日本 | 在线伊人网 | 在线资源视频 | 中文国产成人精品久久无广告 | 免费大片黄在线观看 | 日本三级2018亚洲视频 | 狠狠操2018| 超级毛片 | 日本精品视频一区二区 | 开心久久激情 | 人人爱人人射 | 免费国产怡红院在线观看 | 亚洲视频免费 | 中国videos露脸hd | 欧美成人免费一区在线播放 | 免费动漫无遮挡曰批视频软件 | 国产黑丝美女 | 成年人免费网站在线观看 | 亚洲 欧美 日韩在线 | 精品视频在线播放 | 天天夜天干天天爽 | 久久手机精品视频 | 免费丝袜足控网站 | 亚久久伊人精品青青草原2020 | 亚洲人成网站观看在线观看 | 爱啪啪网 | 在线视频综合网 | 欧美日韩三级在线观看 | 肉动漫成人免费无遮羞 | a级毛片蜜桃成熟时2在线播放 | 日本激情一区二区三区 | 欧美首页| 久久的色偷偷 | 久久夜夜肉肉热热日日 | 看黄a大片 免费 | 在线观看免费成人 | 亚洲一区二区三区精品影院 | a成人在线 | 免费一级片视频 | 久久777国产线看是看精品 | 成人羞羞视频在线观看 |