0

@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ますか?

4

1 に答える 1