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

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://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)
猜你還喜歡下面的內(nèi)容