<sup id="m40ya"></sup>
  • 
    
  • <kbd id="m40ya"></kbd>
    <samp id="m40ya"></samp>
    <ul id="m40ya"></ul>
  • 更多精彩內(nèi)容,歡迎關(guān)注:

    視頻號
    視頻號

    抖音
    抖音

    快手
    快手

    微博
    微博

    當(dāng)前位置:首頁 科技百科 aspect java

    aspect java

    文檔

    aspect java

    aspect java是一個面向切面的框架,它擴(kuò)展了Java語言。AspectJ定義了AOP語法所以它有一個專門的編譯器用來生成遵守Java字節(jié)編碼規(guī)范的Class文件。
    推薦度:
    導(dǎo)讀aspect java是一個面向切面的框架,它擴(kuò)展了Java語言。AspectJ定義了AOP語法所以它有一個專門的編譯器用來生成遵守Java字節(jié)編碼規(guī)范的Class文件。

    aspect java是一個面向切面的框架,它擴(kuò)展了Java語言。AspectJ定義了AOP語法所以它有一個專門的編譯器用來生成遵守Java字節(jié)編碼規(guī)范的Class文件。

    首先是幾個概念:

    aspect(層面)

    pointcut(切入點(diǎn))

    advice(建議)

    weave(織入)

    LTW(加載期織入 load time weave)

    按照aspectj的語法規(guī)則,一個aspect就是很多pointcut和advice的集合,也就是一個*.aj的文件。

    一個pointcut就是對target class的切入點(diǎn)定義,類似Java class定義中的field。

    一個advice就是對target class的行為改變,類似Java class中的method。

    weave就是aspectj runtime庫把a(bǔ)spect織入到target class的行為。

    LTW就是指運(yùn)行期間動態(tài)織入aspect的行為,它是相對靜態(tài)織入行為(包括對源文件、二進(jìn)制文件的修改)。

    一般來講,從運(yùn)行速度上來說,靜態(tài)織入比動態(tài)織入要快些。因?yàn)長TW需要使用aspectj本身的classloader,它的效率要低于jdk的classloader,因此當(dāng)需要load的class非常多時,就會很慢的。

    pycharm, ?o?è?ˉ??2, ?oo ??? ???è′1?′??????????

    舉個例子來說明aspectj的使用:

    scenario: Example工程需要使用一個類Line存在于第三方庫Line.jar中,但是Line本身沒有實(shí)現(xiàn)Serializable接口,并且其toString方法輸出也不完善。因此這兩點(diǎn)都需要修改。

    Line的實(shí)現(xiàn):

    package?bean;
    public?class?Line?{undefined
    protected?int?x1?=?0;
    protected
    int?x2?=?0;
    public?int
    getX1(){undefined
    return?x1;
    }
    public?int
    getX2(){undefined
    return?x2;
    }
    public?void
    setLength(int?newX,?int?newY){undefined
    setX1(newX);
    setX2(newY);
    }
    public?void
    setX1(int?newX)?{undefined
    x1?=?newX;
    }
    public?void
    setX2(int?newY)?{undefined
    x2?=?newY;
    }
    public
    String?toString(){undefined
    return?"("?+?getX1()?+?",?"?+?getX2()?+?")"?;
    }
    }
    Main?entry?:
    public?class?MyExample?{undefined
    private?Line?line?=?null;
    public?MyExample()?{undefined
    line?=?new?Line();
    System.err.println("Line
    implement?serializable?interface?:?"
    +
    (line?instanceof?Serializable));
    }
    public?void?showMe()?{undefined
    System.out.println("Show?all
    about?me?...");
    System.out.println(line.toString());
    }
    public?static?void?main(String[]?args)?{undefined
    MyExample?demo?=?new
    MyExample();
    //?i?want?to?change?the?action
    of?show?me,?but?i?cannot?get?line?source.
    //?so?i?will?trying?load-time
    weaving
    demo.showMe();
    }
    }
    output?:
    Line?implement?serializable?interface?:?true
    Show?all?about?me?...
    (0,?0)

    以上就是小編今天的分享了,希望可以幫助到大家。

    文檔

    aspect java

    aspect java是一個面向切面的框架,它擴(kuò)展了Java語言。AspectJ定義了AOP語法所以它有一個專門的編譯器用來生成遵守Java字節(jié)編碼規(guī)范的Class文件。
    推薦度:
    為你推薦
    資訊專欄
    熱門視頻
    相關(guān)推薦
    怎樣改抖音名字的昵稱 assert java asterisk java axis java bitset java boolean java brew java c#調(diào)用java c#調(diào)用java接口 cache java calendar java qq實(shí)名認(rèn)證怎么解除 callable java character java class轉(zhuǎn)java cmake java compareto java 被刪的微信聊天記錄怎么找回來 continue java django java ansible java ajax java antlr java 交管12123怎么查科目一分?jǐn)?shù) abstract java 拼多多拒收在哪里操作 微信恢復(fù)刪除的聊天記錄 微信掃碼不能掃了怎么辦 怎樣查看微信刪除的聊天記錄 兩個二維碼怎么拼一起 電腦忘記開機(jī)密碼怎么辦 js 字符串轉(zhuǎn)數(shù)字 linux ftp python range函數(shù) java 泛型 java json java final java foreach java hashmap java lambda
    Top 国产成人精品亚洲精品| 国产精品久久久久久久久| 精品国产男人的天堂久久| 亚洲国产精品无码久久久秋霞2 | 久久久无码人妻精品无码| .精品久久久麻豆国产精品| 国产成人综合精品| 2021国产精品自在拍在线播放| 91精品啪在线观看国产| 最新国产精品自在线观看| 精品久久久久久中文字幕大豆网| 国产在线高清精品二区| 91成人午夜在线精品| 久久精品国产亚洲香蕉| 久久精品综合一区二区三区| 国产精品嫩草影院免费| 一本一本久久a久久综合精品蜜桃 一区二区亚洲精品精华液 | 精品区2区3区4区产品乱码9| 日韩人妻精品无码一区二区三区 | 国产在线精品二区| 日韩精品电影一区亚洲| 人妻精品久久久久中文字幕一冢本 | 99久久免费精品国产72精品九九| 99re在线视频精品| 久久成人国产精品二三区| 国产美女精品视频| 免费观看四虎精品成人| 在线观看国产精品va| 精品国产乱码久久久久久鸭王1| 精品日产卡一卡二卡麻豆| 99这里只精品热在线获取| 秋霞久久国产精品电影院| 国产一区二区精品久久岳| www.午夜精品| 精品国自产拍天天拍2021| 国产精品免费小视频| 午夜精品福利在线| 久久国产综合精品SWAG蓝导航| 99热门精品一区二区三区无码| 91久久精品电影| 精品人妻一区二区三区浪潮在线|