aopのポイントカットインジケーター

  • execution:メソッドの実行を照合するために使用される接続ポイント。これは、SpringAOPを使用するときに使用される主要なポイントカットインジケーターです。
  • within:マッチングを特定のタイプ内の接続ポイントに制限します(Spring AOPを使用する場合、マッチングタイプで宣言されたメソッドの実行)。
  • this:Bean参照(Spring AOPプロキシ)が特定のタイプのインスタンスである場合、マッチングをジョインポイントに制限します(Spring AOPを使用する場合のメソッド実行)。
  • target:ターゲットオブジェクト(プロキシアプリケーションオブジェクト)が特定のタイプのインスタンスである場合、マッチングをジョインポイントに制限します(Spring AOPを使用する場合のメソッド実行)。
  • args:マッチングをジョインポイント(Spring AOPを使用する場合のメソッドの実行)に制限します。ここで、パラメーターは特定のタイプのインスタンスです。
  • @target:実行オブジェクトのクラスに特定のタイプのアノテーションがある場合、マッチングは接続ポイントに限定されます(Spring AOPを使用する場合のメソッド実行)。
  • @args:一致する接続ポイントを制限します(Spring AOPを使用する場合のメソッド実行)。渡される実際のパラメーターのランタイムタイプには、指定されたタイプのアノテーションがあります。
  • @within:マッチングを、指定されたアノテーションを持つタイプ内の接続ポイントに制限します(Spring AOPを使用する場合は、指定されたアノテーションを持つタイプで宣言されたメソッドの実行を使用します)。
  • @annotation:指定されたアノテーションを持つサブジェクト(Spring AOPで実行されているメソッド)の接続ポイントへのマッチングを制限します。

 

例に反映されているカバレッジ方法の3つの側面

  • 注釈の使用を定義する

   @Pointcut( "@ annotation(com.example.aopdemo.demo1.config.AuthChecker)")

  • メソッドを定義する

  @Pointcut( "execution(* com.example.aopdemo.demo1.controller.DemoController.alive())")

  • 特定のクラスを定義する

   @Pointcut( "within(com.example.aopdemo.demo1.controller.DemoController))")

 

組み合わせたポイントカット式

&&, ||ポイントカット式を使用して組み合わせることができます!ポイントカット式を名前で参照することもできます

@Pointcut( "execution(public * *(..))")
private void anyPublicOperation(){} 

@Pointcut( "within(com.xyz.myapp.trading .. *)")
private void inTrading(){} 

@ Pointcut( "anyPublicOperation()&& inTrading()")
private void TradingOperation(){}
  • anyPublicOperationは、メソッド実行接続ポイントが任意のパブリックメソッドの実行を表す場合に一致します。
  • inTradingトレーディングモジュールで実行するメソッドがある場合、それは一致します。
  • メソッドの実行がトレーディングモジュール内のパブリックメソッドを表す場合、tradingOperationは一致します。

 

一般的なエントリポイントの定義

実行メソッドID

1.パブリックメソッドの実行

処刑(公開処刑* *(..))

2.名前がsetで始まるメソッドが実行されます

実行(*セット*(..))

3.AccountServiceインターフェースで定義されたメソッドの実行

実行(* com.xyz.service.AccountService。*(..))

4.サービスパッケージ内の任意のメソッドの実行

実行(* com.xyz.service。*。*(..))

5.サービスパッケージまたはそのサブパッケージの1つで定義されたメソッドの実行

実行(* com.xyz.service .. *。*(..))

ロゴ内

6.サービスパッケージ内の接続ポイント

within(com.xyz.service。*)

7.サービスパッケージまたはそのサブパッケージの1つに含まれる接続ポイント

within(com.xyz.service .. *)

その他

8.エージェントは、AccountServiceインターフェースに任意の接続ポイントを実装します

this(com.xyz.service.AccountService)

9.ターゲットオブジェクトがAccountServiceインターフェイスを実装する接続ポイント

target(com.xyz.service.AccountService)

10.単一のパラメーターを取り、実行時に渡される接続ポイント

args(java.io.Serializable)

11.ターゲットオブジェクトに@Transactional注釈が付いている接続ポイント

@target(org.springframework.transaction.annotation.Transactional)

12.ターゲットオブジェクトの宣言されたタイプには、@Transactional注釈が付けられた接続ポイントがあります

@within(org.springframework.transaction.annotation.Transactional)

13.実行メソッドに@Transactional注釈がある接続ポイント

@annotation(org.springframework.transaction.annotation.Transactional)

14.単一のパラメーターを使用する接続ポイント、および渡されたパラメーターのランタイムタイプに@Classified注釈付けられます

@args(com.xyz.security.Classified)

15.次の名前のtradeServiceSpringBean上の接続ポイント:

bean(tradeService)

16.ワイルドカード式と一致する名前のSpringBean上の接続ポイント*Service

bean(*サービス)

おすすめ

転載: blog.csdn.net/liangjiabao5555/article/details/115362251