2017-12-25 21 views
1

SomeInterfaceの実装がいくつかあります。問題は、SomeInterfaceのすべての実装でexecuteSomethingメソッドのポイントカットとは何かです。AspectJ - インタフェース実装のメソッドのポイントカット

+1

あなたは本当にインターフェイスのすべての実装に興味がありますか?「名前がXのメソッドを持つすべてのクラスは十分でしょうか?もしそうなら、あなたは@Pointcut( "execute * *。*。executeSomething(..))") 'を使うことができます。 –

+0

「名前がXのメソッドを持つすべてのクラス」は、他のクラスがない(インターフェイスの実装ではない)場合はOKです。 ご提案いただきありがとうございますが、理想的にはすべての実装が必要です – Lenar

答えて

1

このメソッドのポイントカットは、メソッド実行ポイントコールかメソッドコールポイントカットのいずれかです。

execution(public String SomeInterface+.executeSomething(String)) 
call(public String SomeInterface+.executeSomething(String)) 

これらのポイントカットタイプのいくつかの説明:

  • これらの両方のポイントカットの意味で使用されるタイプのパターン:String返すすべてのパブリックメソッドあなたの条件のための最も特定のポイントカットは次のようになります。 またはそれのサブタイプで定義され、executeSomethingという名前で、String引数の1つを受け入れます。これは、あなたのケースで定義できる最も特殊な型パターンであり、String SomeInterface.executeSomething(String)メソッドの実装と一致します。
  • 実行型ポイントカットは特定のメソッド本体が
  • コールタイプポイントカットを実行したときに対応する特定のメソッドが呼び出されたときに対応する点を結ぶ一致点を結ぶ一致する(すなわち、参加ポイントが発呼者側に配置されている)

実行タイプのポイントカットが頻繁に使用されますが、コールタイプのポイントカットも非常に便利な場合もあります。

AspectJ Programming GuideThe AspectJ Language/Join Points and Pointcutsの章を参照してください。

+0

徹底的な回答 – Lenar

関連する問題