国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

CGLIB動(dòng)態(tài)代理模式的理解

Joonas / 1137人閱讀

摘要:動(dòng)態(tài)代理模式動(dòng)態(tài)代理模式是一種第三方的動(dòng)態(tài)代理模式,我們?cè)谑褂眠@個(gè)代理模式的時(shí)候,需要導(dǎo)入三方包如下動(dòng)態(tài)代理模式不需要想動(dòng)態(tài)代理模式那樣使用接口,一個(gè)非抽象類就可以,但是前提是這個(gè)非抽象類需要實(shí)現(xiàn)接口,并重寫方法。

CGLIB動(dòng)態(tài)代理模式

CGLIB動(dòng)態(tài)代理模式 是一種第三方的動(dòng)態(tài)代理模式,我們?cè)谑褂眠@個(gè)代理模式的時(shí)候,需要導(dǎo)入三方j(luò)ar包,如下:

asm-2.2.3.jar

asm-commons-2.2.3.jar

asm-util-2.2.3.jar

cglib-nodep-2.1_3.jar

CGLIB動(dòng)態(tài)代理模式不需要想JDK動(dòng)態(tài)代理模式那樣使用接口,一個(gè)非抽象類就可以,但是前提是這個(gè)非抽象類需要實(shí)現(xiàn)MethodInterceptor接口,并重寫intercept方法。我們通過(guò)代碼來(lái)了解其實(shí)現(xiàn)原理。

//創(chuàng)建一個(gè)普通類
public class SayHello {
    public void say(String name) {
        System.out.println("您好," + name);
    }
}
//CGLIB動(dòng)態(tài)代理類
public class CglibProxy implements MethodInterceptor {
    
    /**
     * 生成CGLIB代理對(duì)象
     * @param cls -Class類 需要被代理的真實(shí)對(duì)象
     * @return
     */
    public Object getProxy(Class cls) {
        //1.CGLIB enhancer增強(qiáng)類對(duì)象
        Enhancer en = new Enhancer();
        //2.設(shè)置增強(qiáng)類型
        en.setSuperclass(cls);
        //3.定義代理邏輯對(duì)象為當(dāng)前對(duì)象,要求當(dāng)前對(duì)象實(shí)現(xiàn) MethodInterceptor 接口
        en.setCallback(this);
        //生成代理對(duì)象并返回
        Object proxy = en.create();
        return proxy;
    }
    /**
     * 代理邏輯方法
     * 1.proxy 代理對(duì)象
     * 2.method 方法
     * 3.args 方法參數(shù)
     * 4.methodProxy 方法代理
     */
    @Override
    public Object intercept(Object proxy, Method method, Object[] args, MethodProxy methodProxy) throws Throwable {
        System.out.println("調(diào)用代理對(duì)象之前的邏輯~");
        Object result = methodProxy.invokeSuper(proxy, args);
        System.out.println("調(diào)用代理對(duì)象之后的邏輯~");
        return result;
    }
}
//測(cè)試代碼
public class TestCglibProxy {
    public static void main(String[] args) {
        CglibProxy cglib = new CglibProxy();
        SayHello proxy = (SayHello) cglib.getProxy(SayHello.class);
        proxy.say("James");
    }
}
結(jié)果展示

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/69601.html

相關(guān)文章

  • 設(shè)計(jì)模式代理模式

    摘要:下面我們通過(guò)玩英雄聯(lián)盟代練的例子來(lái)說(shuō)明下登錄游戲贏下了一局英雄聯(lián)盟,獲得了金幣測(cè)試結(jié)果登錄游戲贏下了一局英雄聯(lián)盟,獲得了金幣可以這樣理解,自己寫代理類的方式就是靜態(tài)代理。 前言 剛上大學(xué)那會(huì),英雄聯(lián)盟火的一塌糊涂,當(dāng)時(shí)每天都想著升到30級(jí)開(kāi)啟排位之旅。可是升到30級(jí)需要大把的時(shí)間不說(shuō),這時(shí)候匹配到的人,水平過(guò)于參差不齊,問(wèn)候你全家的事經(jīng)常發(fā)生,那個(gè)時(shí)候就想要是能有個(gè)代練幫我升到30級(jí)該...

    xuweijian 評(píng)論0 收藏0
  • JAVA代理模式理解和應(yīng)用

    摘要:代理模式代理模式通俗一點(diǎn)的解釋就是在操作一個(gè)對(duì)象和對(duì)象中的方法時(shí),不是直接操作這個(gè)對(duì)象,還是通過(guò)一個(gè)代理對(duì)象來(lái)操作這個(gè)實(shí)際的目標(biāo)對(duì)象。 代理模式: 代理模式通俗一點(diǎn)的解釋就是在操作一個(gè)對(duì)象和對(duì)象中的方法時(shí),不是直接操作這個(gè)對(duì)象,還是通過(guò)一個(gè)代理對(duì)象來(lái)操作這個(gè)實(shí)際的目標(biāo)對(duì)象。應(yīng)用場(chǎng)景一般是需要在執(zhí)行某個(gè)已經(jīng)寫好的方法前后再添加一段邏輯,比如執(zhí)行方法前打印日志,或者在執(zhí)行方法之前和之后打時(shí)...

    CatalpaFlat 評(píng)論0 收藏0
  • Java動(dòng)態(tài)代理 jdk和cglib實(shí)現(xiàn)比較

    摘要:與靜態(tài)代理對(duì)比,動(dòng)態(tài)代理是在動(dòng)態(tài)生成代理類,由代理類完成對(duì)具體方法的封裝,實(shí)現(xiàn)的功能。本文將分析中兩種動(dòng)態(tài)代理的實(shí)現(xiàn)方式,和,比較它們的異同。那如何動(dòng)態(tài)編譯呢你可以使用,這是一個(gè)封裝了的庫(kù),幫助你方便地實(shí)現(xiàn)動(dòng)態(tài)編譯源代碼。 發(fā)現(xiàn)Java面試很喜歡問(wèn)Spring AOP怎么實(shí)現(xiàn)的之類的問(wèn)題,所以寫一篇文章來(lái)整理一下。關(guān)于AOP和代理模式的概念這里并不做贅述,而是直奔主題,即AOP的實(shí)現(xiàn)方...

    h9911 評(píng)論0 收藏0
  • Java代理設(shè)計(jì)模式(Proxy)四種具體實(shí)現(xiàn):靜態(tài)代理動(dòng)態(tài)代理

    摘要:除了和外,我們還有最后一招我直接把一個(gè)代理類的源代碼用字符串拼出來(lái),然后基于這個(gè)字符串調(diào)用的編譯期,動(dòng)態(tài)的創(chuàng)建一個(gè)新的文件,然后動(dòng)態(tài)編譯這個(gè)文件,這樣也能得到一個(gè)新的代理類。 面試問(wèn)題:Java里的代理設(shè)計(jì)模式(Proxy Design Pattern)一共有幾種實(shí)現(xiàn)方式?這個(gè)題目很像孔乙己?jiǎn)栜钕愣沟能钭钟心膸追N寫法? showImg(https://segmentfault.com/...

    gclove 評(píng)論0 收藏0
  • 淺入淺出Java代理三種實(shí)現(xiàn)

    摘要:代理模式的實(shí)現(xiàn)靜態(tài)代理優(yōu)缺點(diǎn)優(yōu)點(diǎn)只對(duì)對(duì)需要的方法加代理邏輯。通過(guò)繼承的方式進(jìn)行代理,無(wú)論目標(biāo)對(duì)象有沒(méi)有實(shí)現(xiàn)接口都可以代理,但是無(wú)法處理的情況。 注意:本文所有的class使用的static修飾主要是為了能在一個(gè)類里面測(cè)試。實(shí)際項(xiàng)目中不應(yīng)該這樣做的,應(yīng)該分包分class。文字描述不是很多,還是看代碼比較好理解吧... 1. Java代理的理解 代理模式是一種設(shè)計(jì)模式,簡(jiǎn)單說(shuō)即是在不改變?cè)?..

    lewif 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<