java靜態(tài)代理與動態(tài)代理的概念-創(chuàng)新互聯(lián)

本篇內(nèi)容介紹了“java靜態(tài)代理與動態(tài)代理的概念”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!

成都創(chuàng)新互聯(lián)主要從事網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)順城,十年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18980820575

        1.靜態(tài)代理:編譯時生成代理,也稱編譯時增強。

        2.動態(tài)代理:運行時生成代理,也成為運行時增強。

 動態(tài)代理:動態(tài)代理有兩種常見實現(xiàn)方式。

  a.cglib動態(tài)代理。代理的是類,不需要實現(xiàn)接口。通過派生類的子類來實現(xiàn)代理。通過在運行時,動態(tài)修改字節(jié)碼達到修改類的目的。

  b.jdk動態(tài)代理。實現(xiàn)類InvocationHandler接口的invoker方法,但是注意代理的是接口。也就是說業(yè)務(wù)類必須要實現(xiàn)接口,通過Proxy里的newProxyInstance得到代理對象。

     在java.lang.reflect包中,提供一個Proxy類和InvocationHandler接口,通過這個類和接口可以生成JDK的動態(tài)代理。

1,通過實現(xiàn) InvocationHandler 接口創(chuàng)建自己的調(diào)用處理器

InvocationHandlerImpl 實現(xiàn)了 InvocationHandler 接口,并能實現(xiàn)方法調(diào)用從代理類到委托類的分派轉(zhuǎn)發(fā)
InvocationHandler handler = new InvocationHandlerImpl(..);

2,通過為 Proxy 類指定 ClassLoader 對象和一組 interface 來創(chuàng)建動態(tài)代理類;

// 通過 Proxy 為包括 Interface 接口在內(nèi)的一組接口動態(tài)創(chuàng)建代理類的類對象
Class clazz = Proxy.getProxyClass(classLoader, new Class[] { Interface.class, ... });

3,通過反射機制獲得動態(tài)代理類的構(gòu)造函數(shù),其唯一參數(shù)類型是調(diào)用處理器接口類型;

// 通過反射從生成的類對象獲得構(gòu)造函數(shù)對象
Constructor constructor = clazz.getConstructor(new Class[] { InvocationHandler.class });

4,通過構(gòu)造函數(shù)創(chuàng)建動態(tài)代理類實例,構(gòu)造時調(diào)用處理器對象作為參數(shù)被傳入。

// 通過構(gòu)造函數(shù)對象創(chuàng)建動態(tài)代理類實例
Interface Proxy = (Interface)constructor.newInstance(new Object[] { handler });

為了簡化對象創(chuàng)建過程,Proxy類中的newProxyInstance封裝了2-4步驟,只需兩步即可完成代理對象的創(chuàng)建。

// 通過 Proxy 直接創(chuàng)建動態(tài)代理類實例 Interface proxy = (Interface)Proxy.newProxyInstance( classLoader, new Class[] { Interface.class }, 
     handler );

“java靜態(tài)代理與動態(tài)代理的概念”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

網(wǎng)站題目:java靜態(tài)代理與動態(tài)代理的概念-創(chuàng)新互聯(lián)
URL網(wǎng)址:http://muchs.cn/article14/pdede.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣網(wǎng)站排名、網(wǎng)站建設(shè)、標(biāo)簽優(yōu)化、靜態(tài)網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)

廣告

聲明:本網(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)

網(wǎng)站建設(shè)網(wǎng)站維護公司