@Pointcut
引数リストに関係なく、クラス内のすべてのパブリック メソッドに一致する Spring @AspectJ ポイントカット () 式を作成するにはどうすればよいですか?
特定のアノテーションを持つ特定のクラスのすべて@AfterThrowing
のパブリック メソッドのポイント カットを持つアスペクトが必要です(以前の SO の質問で他の誰かが望んでいたものと同様)。現在、私の側面は次のようになっています。@MyAnnotation
@Aspect
public final class ServiceDataAccessExceptionReporter {
@Pointcut("execution(public * com.example.Service.*(..)) && @annotation(com.example.MyAnnotation))")
public void annotatedMethod() {}
@AfterThrowing(pointcut = "annotatedMethod()", throwing = "exception")
public void reportException(final DataAccessException exception) {
...
}
}
Eclipse Spring プラグインは、(ソース コード ウィンドウで矢印の注釈を使用して) これがメソッドを正しくアドバイスしていることを示しcom.example.Service.getNames()
ます。ただし、 などの引数を持つメソッドcom.example.Service.getTimes(String name)
が推奨されていることを示すものではありません。
アノテーション付きのメソッドに@Pointcut
引数がないからですか?引数リストに関係なく、ポイントカットをすべてのメソッドにするにはどうすればよいですか? @Pointcut
それとも、クラスの引数リストの種類ごとに個別に持つ必要がありcom.example.Service
ますか?