国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > Java > 正文

詳解Spring的兩種代理方式:JDK動態(tài)代理和CGLIB動態(tài)代理

2024-07-14 08:40:18
字體:
供稿:網(wǎng)友

代理模式

代理模式的英文叫做Proxy或Surrogate,中文都可譯為”代理“,所謂代理,就是一個人或者一個機構(gòu)代表另一個人或者另一個機構(gòu)采取行動。在一些情況下,一個客戶不想或者不能夠直接引用一個對象,而代理對象可以在客戶端和目標(biāo)對象之間起到中介的作用

A. 抽象主題角色

聲明了真實主題和代理主題的共同接口,這樣一來在任何可以使用真實主題的地方都可以是使用代理主題

B. 代理主題(Proxy)角色:

代理主題角色內(nèi)部含有對真實主題的引用,從而可以在任何時候操作真實主題對象;代理主題角色提供一個與真實主題角色相同的接口,以便可以在任何時候都可以替代真實主題控制對真實主題的引用,負(fù)責(zé)在需要的時候創(chuàng)建真實主題對象(和刪除真實主題對象);代理角色通常在將客戶端調(diào)用傳遞給真實的主題之前或之后,都要執(zhí)行某個操作,而不是單純地將調(diào)用傳遞給真實主題對象。

C. 真實主題角色

定義了代理角色所代表地真實對象

Spring,JDK,CGLIB,動態(tài)代理

Spring,JDK,CGLIB,動態(tài)代理

例如:

Spring,JDK,CGLIB,動態(tài)代理

Spring,JDK,CGLIB,動態(tài)代理

用動態(tài)代理模式重構(gòu)

Spring,JDK,CGLIB,動態(tài)代理

JDK動態(tài)代理

Spring,JDK,CGLIB,動態(tài)代理

Spring,JDK,CGLIB,動態(tài)代理

目標(biāo)類
攔截器
代理類

總結(jié):1、因為利用JDKProxy生成的代理類實現(xiàn)了接口,所以目標(biāo)類中所有的方法在代理類中都有。
2、生成的代理類的所有的方法都攔截了目標(biāo)類的所有的方法。而攔截器中invoke方法的內(nèi)容正好就是代理類的各個方法的組成體。
3、利用JDKProxy方式必須有接口的存在。
4、invoke方法中的三個參數(shù)可以訪問目標(biāo)類的被調(diào)用方法的API、被調(diào)用方法的參數(shù)、被調(diào)用方法的返回類型。

用JDK動態(tài)代理模式重構(gòu)

Spring,JDK,CGLIB,動態(tài)代理

用JDK動態(tài)代理模式重構(gòu)hibernate事務(wù)

Spring,JDK,CGLIB,動態(tài)代理

cglib動態(tài)代理

1、 CGlib是一個強大的,高性能,高質(zhì)量的Code生成類庫。它可以在運行期擴展Java類與實現(xiàn)Java接口。
2、 用CGlib生成代理類是目標(biāo)類的子類。
3、 用CGlib生成 代理類不需要接口
4、 用CGLib生成的代理類重寫了父類的各個方法。
5、 攔截器中的intercept方法內(nèi)容正好就是代理類中的方法體

Spring,JDK,CGLIB,動態(tài)代理

Spring,JDK,CGLIB,動態(tài)代理

用cglib動態(tài)代理模式重構(gòu)hibernate事務(wù)

Spring,JDK,CGLIB,動態(tài)代理

spring兩種代理方式

1、若目標(biāo)對象實現(xiàn)了若干接口,spring使用JDK的java.lang.reflect.Proxy類代理。
優(yōu)點:因為有接口,所以使系統(tǒng)更加松耦合
缺點:為每一個目標(biāo)類創(chuàng)建接口

2、若目標(biāo)對象沒有實現(xiàn)任何接口,spring使用CGLIB庫生成目標(biāo)對象的子類。
優(yōu)點:因為代理類與目標(biāo)類是繼承關(guān)系,所以不需要有接口的存在。
缺點:因為沒有使用接口,所以系統(tǒng)的耦合性沒有使用JDK的動態(tài)代理好。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持VeVb武林網(wǎng)。


注:相關(guān)教程知識閱讀請移步到JAVA教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 桐柏县| 巴东县| 陵水| 卓资县| 台中县| 通化县| 阳东县| 如皋市| 资阳市| 洛川县| 金坛市| 黄浦区| 威信县| 福建省| 宁河县| 普格县| 云南省| 富川| 运城市| 中牟县| 谢通门县| 昭通市| 布尔津县| 昌江| 余干县| 绍兴县| 通道| 徐闻县| 崇义县| 读书| 遂溪县| 澎湖县| 岗巴县| 周至县| 绥德县| 美姑县| 鄯善县| 山西省| 北海市| 溧水县| 涞水县|