欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

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

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

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

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

        2.動(dòng)態(tài)代理:運(yùn)行時(shí)生成代理,也成為運(yùn)行時(shí)增強(qiáng)。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營(yí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)請(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)

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