一、首先說一下JDK中的動態(tài)代理:
創(chuàng)新互聯(lián)主營德安網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,重慶APP軟件開發(fā),德安h5重慶小程序開發(fā)公司搭建,德安網(wǎng)站營銷推廣歡迎德安等地區(qū)企業(yè)咨詢JDK中的動態(tài)代理是通過反射類Proxy以及InvocationHandler回調(diào)接口實現(xiàn)的
但是,JDK中所要進行動態(tài)代理的類必須要實現(xiàn)一個接口,也就是說只能對該類所實現(xiàn)接口中定義的方法進行代理,這在實際編程中具有一定的局限性,而且使用反射的效率也并不是很高。
二、使用CGLib實現(xiàn):
使用CGLib實現(xiàn)動態(tài)代理,完全不受代理類必須實現(xiàn)接口的限制,而且CGLib底層采用ASM字節(jié)碼生成框架,使用字節(jié)碼技術(shù)生成代理類,比使用Java反射效率要高。唯一需要注意的是,CGLib不能對聲明為final的方法進行代理,因為CGLib原理是動態(tài)生成被代理類的子類。
下面,將通過一個實例介紹使用CGLib實現(xiàn)動態(tài)代理。
1、被代理類:
首先,定義一個類,該類沒有實現(xiàn)任何接口,包含兩個方法。
public class ConcreteClassNoInterface { public String getConcreteMethodA(String str){ System.out.println("ConcreteMethod A ... "+str); return str; } public int getConcreteMethodB(int n){ System.out.println("ConcreteMethod B ... "+n); return n+10; } }
名稱欄目:JavaCGLib動態(tài)代理機制(全面解析)-創(chuàng)新互聯(lián)
鏈接分享:http://aaarwkj.com/article24/hodce.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導航、品牌網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、營銷型網(wǎng)站建設(shè)、云服務(wù)器、小程序開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容