<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 431,  comments - 344,  trackbacks - 0

    1.   捕獲對構造函數的調用
           pointcut <pointcut name>(<any values to be picked up>) : call(<optional modifier> <class>.new(<parameter types>));

    2.   在執行構造函數時捕獲它
          pointcut <pointcut name>(<any values to be picked up>) : execution(<optional modifier> <class>.new(<parameter types>));

    3.   捕獲何時初始化對象
          pointcut <pointcut name>(<any values to be picked up>) : initialization(<optional modifier> <class>.new(<parameter types>));
          initialization(Signature)切入點必須包含new關鍵字,Signature必須解析成特定類的構造函數,而不是一個簡單的方法。
          由于AspectJ編譯器中的編譯器限制,當與around()通知關聯時,不能使用initialization(Signature)切入點。
          與execution(Signature)切入點相比,使用initialization(Signature)切入點最大優點是:它提供了編譯時檢查,以確保簽名實際上制定了一個構造函數。

    4.   捕獲何時將要初始化一個對象
          pointcut <pointcut name>(<any values to be picked up>) : preinitialization(<optional modifier> <class>.new(<parameter types>));

    5.   捕獲何時初始化類
          
    pointcut <pointcut name>(<any values to be picked up>) : staticinitialization(<class>);


    package com.eric.aspectj;

    public aspect CallNewRecipe {
     pointcut myClassConstructorWithIntAndStringPointcutStaticinitialization() : staticinitialization(MyClass);
     pointcut myClassConstructorWithIntAndStringPointcutCall() : call(MyClass.new(int, String));
     pointcut myClassConstructorWithIntAndStringPointcutExecution() : execution(MyClass.new(int, String));
     pointcut myClassConstructorWithIntAndStringPointcutPreinitialization() : preinitialization(MyClass.new(int, String));
     pointcut myClassConstructorWithIntAndStringPointcutInitialization() : initialization(MyClass.new(int, String));
     
     
     before() : myClassConstructorWithIntAndStringPointcutExecution() {
      System.out.println("-------------- Aspect Advice Logic Execution ---------------");
      System.out.println("In the advice picked by " + "myClassConstructorWithIntAndOthersPointcut()");
      System.out.println("The current type of object under construction is: ");
      System.out.println("getThis: " + thisJoinPoint.getThis());
      System.out.println("getTarget: " + thisJoinPoint.getTarget());
      System.out.println("getKind: " + thisJoinPoint.getKind());
      System.out.println("Signature: " + thisJoinPoint.getSignature());
      System.out.println("getName: " + thisJoinPoint.getSignature().getName());
      System.out.println("getDeclaringTypeName: " + thisJoinPoint.getSignature().getDeclaringTypeName());
      System.out.println("getDeclaringType: " + thisJoinPoint.getSignature().getDeclaringType());
      System.out.println("getModifiers: " + thisJoinPoint.getSignature().getModifiers());
      System.out.println("Source Line: " + thisJoinPoint.getSourceLocation());
      System.out.println("toString: " + thisJoinPoint.toString());
      System.out.println("--------------------------------------------------");
     }
     before() : myClassConstructorWithIntAndStringPointcutStaticinitialization() {
      System.out.println("--------------- Staticinitialization ------------------");
     }
     before() : myClassConstructorWithIntAndStringPointcutCall() {
      System.out.println("--------------- Call ------------------");
     }
     before() : myClassConstructorWithIntAndStringPointcutPreinitialization() {
      System.out.println("--------------- Preinitialization ------------------");
     }
     before() : myClassConstructorWithIntAndStringPointcutInitialization() {
      System.out.println("--------------- Initialization ------------------");
     }
    }

    package com.eric.aspectj;

    public class MyClass {

     private int number;
     private String name;
     
     public MyClass(int number, String name) {
      this.number = number;
      this.name = name;
     }
     /**
      * @param args
      */
     public static void main(String[] args) {
      // TODO Auto-generated method stub
      MyClass myObject = new MyClass(123, "Eric Chau");
     }

    }

    運行結果:
    --------------- Staticinitialization ------------------
    --------------- Call ------------------
    --------------- Preinitialization ------------------
    --------------- Initialization ------------------
    -------------- Aspect Advice Logic Execution ---------------
    In the advice picked by myClassConstructorWithIntAndOthersPointcut()
    The current type of object under construction is:
    getThis: com.eric.aspectj.MyClass@10d448
    getTarget: com.eric.aspectj.MyClass@10d448
    getKind: constructor-execution
    Signature: com.eric.aspectj.MyClass(int, String)
    getName: <init>
    getDeclaringTypeName: com.eric.aspectj.MyClass
    getDeclaringType: class com.eric.aspectj.MyClass
    getModifiers: 1
    Source Line: MyClass.java:8
    toString: execution(com.eric.aspectj.MyClass(int, String))
    --------------------------------------------------

    posted on 2007-07-04 13:56 周銳 閱讀(255) 評論(0)  編輯  收藏 所屬分類: AspectJ
    主站蜘蛛池模板: 免费一级毛片不卡不收费| 99精品免费视品| 在线天堂免费观看.WWW| 久久精品国产亚洲av麻豆小说| 四虎精品亚洲一区二区三区| 亚洲爆乳成av人在线视菜奈实| 成熟女人牲交片免费观看视频| 亚洲一区二区三区在线观看网站| 成年丰满熟妇午夜免费视频| 亚洲自偷自偷在线成人网站传媒 | 免费a级黄色毛片| 羞羞视频在线免费观看| 亚洲AV伊人久久青青草原| selaoban在线视频免费精品| 亚洲精品无码乱码成人| 91视频免费网址| 亚洲日本va在线观看| 国产麻豆剧传媒精品国产免费 | 国产特黄一级一片免费| 在线观看免费人成视频色| 亚洲视频在线观看2018| 国产免费观看黄AV片| 狠狠躁狠狠爱免费视频无码| 国产AV无码专区亚洲AV男同| 最近免费中文字幕大全高清大全1| 国产亚洲福利在线视频| 国产午夜亚洲不卡| 亚洲一区二区免费视频| 久久精品国产亚洲av品善| 亚洲一区精品无码| 免费99精品国产自在现线| 无套内谢孕妇毛片免费看看| 午夜成人免费视频| 亚洲午夜在线一区| 又爽又高潮的BB视频免费看| 国产一级在线免费观看| 中文字幕亚洲情99在线| 国产亚洲色视频在线| 免费一本色道久久一区| 中文在线观看免费网站| 亚洲性色AV日韩在线观看|