<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 最新国产乱人伦偷精品免费网站| 国产成人精品视频播放| 国产主播精品在线| 国产精品内射视频免费| 精品亚洲麻豆1区2区3区| 无码精品人妻一区二区三区AV| 一级香蕉精品视频在线播放| 国产精品不卡视频| 99视频在线精品免费| 精品无码国产AV一区二区三区| 国产午夜福利精品久久2021| 囯产精品久久久久久久久久妞妞 | 国产精品亚洲色图| 久久99精品国产自在现线小黄鸭 | sss视频在线精品| 精品无码久久久久国产动漫3d| 亚洲精品A在线观看| 青娱乐2017年精品视频在线| 国内精品久久久久| 伊人久久无码精品中文字幕| 2021国产精品视频| 久久99视频精品| 国产高清精品在线| 精品人妻系列无码人妻漫画| 精品无码无人网站免费视频| 伊人久久精品无码二区麻豆| 精品视频在线观看一区二区三区| 亚洲精品国产suv一区88| 91午夜精品亚洲一区二区三区| 亚洲国产精品一区第二页| 精品久久久久久国产牛牛app| 国产精品videossex国产高清| 欧美精品VIDEOSEX性欧美| 国产成人亚洲精品| 91热久久免费精品99| 久久66久这里精品99| 国产成人精品无码片区在线观看| 最新国产在线精品观看| 久久久久这里只有精品| 国产精品人人做人人爽人人添| 国产三级国产精品|