中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

詳解Spring的兩種代理方式:JDK動(dòng)態(tài)代理和CGLIB動(dòng)態(tài)代理-創(chuàng)新互聯(lián)

代理模式

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),汾西企業(yè)網(wǎng)站建設(shè),汾西品牌網(wǎng)站建設(shè),網(wǎng)站定制,汾西網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,汾西網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

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


A. 抽象主題角色


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


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


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


C. 真實(shí)主題角色


定義了代理角色所代表地真實(shí)對(duì)象


例如:


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

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

JDK動(dòng)態(tài)代理

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

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

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

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

cglib動(dòng)態(tài)代理

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

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

spring兩種代理方式

1、若目標(biāo)對(duì)象實(shí)現(xiàn)了若干接口,spring使用JDK的java.lang.reflect.Proxy類代理。
優(yōu)點(diǎn):因?yàn)橛薪涌冢允瓜到y(tǒng)更加松耦合
缺點(diǎn):為每一個(gè)目標(biāo)類創(chuàng)建接口

2、若目標(biāo)對(duì)象沒有實(shí)現(xiàn)任何接口,spring使用CGLIB庫生成目標(biāo)對(duì)象的子類。
優(yōu)點(diǎn):因?yàn)榇眍惻c目標(biāo)類是繼承關(guān)系,所以不需要有接口的存在。
缺點(diǎn):因?yàn)闆]有使用接口,所以系統(tǒng)的耦合性沒有使用JDK的動(dòng)態(tài)代理好。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。

文章標(biāo)題:詳解Spring的兩種代理方式:JDK動(dòng)態(tài)代理和CGLIB動(dòng)態(tài)代理-創(chuàng)新互聯(lián)
本文網(wǎng)址:http://www.rwnh.cn/article0/cepiio.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、虛擬主機(jī)微信公眾號(hào)、面包屑導(dǎo)航自適應(yīng)網(wǎng)站、定制開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作
搜索| 德庆县| 澎湖县| 嘉义县| 富锦市| 临清市| 潞西市| 黑水县| 贺兰县| 和林格尔县| 长岭县| 泸定县| 高邮市| 古丈县| 无极县| 扶风县| 永福县| 漯河市| 贵德县| 浑源县| 张家港市| 弥渡县| 汨罗市| 洛浦县| 中西区| 北京市| 尉犁县| 本溪市| 达尔| 旌德县| 东乡县| 丰县| 马边| 江西省| 乌鲁木齐市| 石泉县| 平顺县| 互助| 玛沁县| 阿鲁科尔沁旗| 威宁|