aopカットポイント表現


1、接点式のフォーマット:execution([視認性]リターンタイプ[宣言タイプ].メソッド名(パラメータ)[異常]
 
2、ポイント式ワイルドカード:      *:すべての文字にマッチ      ..:複数のパケットにマッチするために使用されます。複数のパラメータ      +:表示類とその子類
 
3、接点表現は論理演算子をサポートします。
 
4、切り込みポイント表現のキーワード:      1)execution:配偶子表現に使用します。
            //comp.cjm.modelパケットとそのサブパケットのすべての種類にマッチするすべての方法は、タイプの任意の種類に戻ります。方法パラメータは任意です。            @Pointcut(「execution(*comp.cjm.model.*.)」)            public void before(){}
 
      2)within:接続点があるJava類またはカバンに適合するために使用します。
            //Personクラスにマッチするすべての方法            @Pointcut(「within(comp.cjm.model.Person)」)            public void before(){}
 
            //comp.cjmとそのサブバッグのすべての種類にマッチするすべての方法
            @Pointcut(「within(comp.cjm.*)」)            public void before(){}
 
     3)this:通知方法におけるプロキシオブジェクトへの参照。            @Before(「before()&this(proxy)」            public void before Advider(JoinPoint point、Object proxy){                  //処理ロジック            }
 
      4)タージ:通知方法においてターゲットオブジェクトに入るための参照。            @Before(「before()&target」            public void before Advider(JoinPoint point、Object proxy){                  //処理ロジック            }
 
      5)args:パラメータを通知方法に伝えるために使用します。            @Before(「before()&args(age,username)」)            public void before Advider(JoinPoint point,int age,String username){                  //処理ロジック            }         6)@within:クラス1でパラメータ決定を使用した注釈にマッチするクラスで、そのすべての方法が一致します。 
            @Pointcut(「@within(comp.annotations.Adviice Annotation)」)-すべて@Advice Annotationに表示されている種類が一致します。            public void before(){}
 
Javaコード 
  • @Retension(Retension Policy.RUNTIME)  
  • @Target({ElemenntType.TYPE) ElemenntType.METHOD}  
  • @Dcumented  
  • @Inheited  
  • pblic  @インターフェース A dvd Annotation {  
  •   
  • }  
  •   @Retention(RetentionPolicy.RUNTIME)
      @Target({ElementType.TYPE, ElementType.METHOD})
      @Documented
      @Inherited
      public @interface AdviceAnnotation {
    
      }
     
          7)@target:@withinの機能と似ていますが、注釈インターフェースの予約ポリシーを指定しなければなりません。            @Pointcut(「@target(comp.annotations.Adviice Annotation)」)            public void before(){}
     
          8)@args:着信接続点のオブジェクトに対応するJava類は@argsで指定されたAnnotationに注釈表示されなければなりません。            @Before(「@args(comp.cjm.annotations.Adviice Annotation)」)            public void before Advide(JoinPoint point){                  //処理ロジック            }
     
    Javaコード 
  • pblic  クラス Person {  
  •     public  void say(Address) address){  
  •           //処理ロジック  
  •    }  
  • }  
  •   
  •  @A dvd Annotation  
  •  public  クラス Address {  
  •      
  •  }  
  • public class Person {
        public void say(Address address){
              //    
       }
    }
    
     @AdviceAnnotation
     public class Address {
       
     }
    
     
      Person類のsay方法が呼び出されたときにbefore Advider通知をトリガする必要がある場合、say方法のパラメータに対応するJavaタイプAddress類は@Advice Annotationに表示されなければならない。
     
          9)@annotation:接続点がそのパラメータによって指定されたAnnotationに対応する方法。つまり、指定された注釈表示の全ての方法が一致します。            @Pointcut(「@annotation(comp.annotations.Adviice Annotation)」)            public void before(){}
     
    Javaコード 
  • pblic  クラス Person {  
  •       @A dvd Annotation  
  •       public  void say(Address) address){  
  •               //処理ロジック  
  •     }  
  • }  
  • public class Person {
          @AdviceAnnotation
          public void say(Address address){
                  //    
        }
    }
    
     
      Person類のsay方法は@Advice Annotationに表記されていますので、それにマッチします。
     
          10)ビーン:チューブビーンの名前で接続点のあるビーンを限定します。このキーワードはSpring 2.5が追加されました。            @Pointcut(「bean(person)」)            public void before(){}
     
                idがpersonである受管Beanのすべての方法が一致します。