义齿

3342 ワード

Spring AOPユーザーはよく使うかもしれません execution pointcut designator.式の形式は次のとおりです.
execution(modifiers-pattern? ret-type-pattern declaring-type-pattern? name-pattern(param-pattern) throws-pattern?)

戻りタイプモード(上のコードセグメントのret-type-pattern)、名前モード、パラメータモードを除いて、すべての部分がオプションです.戻りタイプモードは、メソッドの戻りタイプが接続点に順次一致する必要があることを決定します.最も頻繁に使用される戻りパターンは *,任意の戻りタイプに一致することを表します.フルネームで定義されたタイプ名は、指定されたタイプを返すメソッドにのみ一致します.名前パターンが一致するのはメソッド名です.使用できる * ワイルドカードは、すべてまたは一部のネーミングモードとして使用されます.パラメータモードは少し複雑です:() パラメータを受け入れない方法と一致し、 (..) 任意の数のパラメータを受け入れる方法(ゼロ以上)を一致させた.を選択します. (*) 任意のタイプのパラメータを受け入れる方法と一致します.を選択します. (*,String) 2つのパラメータを受け入れる方法を一致させ、1つ目は任意のタイプであってもよく、2つ目はStringタイプでなければならない.AspectJプログラミングガイドの Language Semantics 部分.
次に、一般的な切り込み点式の例を示します.
  • 任意の共通メソッドの実行:
    execution(public * *(..))
  • 「set」で始まるいずれかの方法の実行:
    execution(* set*(..))
  • AccountService インタフェースの任意の方法の実行:
    execution(* com.xyz.service.AccountService.*(..))
  • サービスパッケージに定義された任意の方法の実行:
    execution(* com.xyz.service.*.*(..))
  • サービスパケットまたはサブパケットに定義される任意の方法の実行:
    execution(* com.xyz.service..*.*(..))
  • サービスパッケージ内の任意の接続点(Spring AOPではメソッドのみ実行):
    within(com.xyz.service.*)
  • サービスパッケージまたはサブパッケージ内の任意の接続点(Spring AOPではメソッドのみ実行):
    within(com.xyz.service..*)
  • が実現しました AccountService インタフェースのエージェントオブジェクトの任意の接続ポイント(Spring AOPではメソッドのみ実行):
    this(com.xyz.service.AccountService)
    'this'binding formで使用される詳細:-エージェントオブジェクトが通知内にアクセスできるようにする方法については、以下の通知の章でよく説明してください.
  • が実現しました AccountService インタフェースのターゲットオブジェクトの任意の接続ポイント(Spring AOPではメソッドのみ実行):
    target(com.xyz.service.AccountService)
    'target'binding formで使用される詳細:-ターゲットオブジェクトが通知内にアクセスできるようにする方法については、次の通知の章でよく説明してください.
  • のいずれかは1つのパラメータのみを受け入れ、実行時に入力されたパラメータは実現される. Serializable インタフェースの接続点(Spring AOPではメソッド実行のみ)
    args(java.io.Serializable)
    'args'はbinding formで使用されています.-メソッドパラメータが通知内にアクセスできるようにする方法について、次の通知の章でよく説明してください.例で示した切り込み点は execution(*(java.io.Serializable):argsは、動的実行時に入力パラメータがシーケンス可能(Serializable)である場合にのみ一致し、executionは、入力パラメータの署名宣言のタイプで実現されます. Serializable インタフェースが一致します.
  • には @Transactional 注記のターゲットオブジェクトの任意の接続ポイント(Spring AOPではメソッドのみ実行)
    @target(org.springframework.transaction.annotation.Transactional)
    '@target'はbinding formでも使用できます.annotationオブジェクトが通知内にアクセスできるようにする方法については、以下の通知の章で説明してください.
  • ターゲットオブジェクト宣言のタイプには、 @Transactional 注記の接続点(Spring AOPではメソッド実行のみ)
    @within(org.springframework.transaction.annotation.Transactional)
    '@within'はbinding formでも使用できます.-annotationオブジェクトが通知内にアクセスできるようにする方法については、次の通知の章でよく説明してください.
  • のいずれかの実行方法には @Transactional annotationの接続点(Spring AOPではメソッド実行のみ)
    @annotation(org.springframework.transaction.annotation.Transactional)
    '@annotation'はbinding formでも使用できます.-annotationオブジェクトが通知内にアクセスできるようにする方法については、次の通知の章を参照してください.
  • のいずれかが1つのパラメータを受け入れ、入力されたパラメータの実行時のタイプが実現される. @Classified annotationの接続点(Spring AOPではメソッド実行のみ)
    @args(com.xyz.security.Classified)
    '@args'はbinding formでも使用できます.-annotationオブジェクトが通知内にアクセスできるようにする方法については、通知の章でよく説明してください.