1

アスペクト j では、単一のアドバイスに複数のポイントカットをマップできますか?

たとえば、以下は2つの別々のポイントカットです

@Pointcut("execution(* xyz.get(..))")
    void pointcut1() {
    }

@Pointcut("execution(* abc.put(..))")
    void pointcut2() {
    }

では、これら 2 つのポイントカットを 1 つのアドバイスで構成する方法を誰でも教えてもらえますか?

以下のような単一のアドバイスへの単一のポイントカットの場合、

@Before("pointcut1()")
    public void beforeLogging() {
        System.out.println("Before Methods");
    }

複数のポイントカットに対して同じアドバイスを構成する方法は?

4

2 に答える 2

1

はい、ポイントカットを論理 AND ( &&) や論理 OR ( ||) 演算子と組み合わせたり、論理 NOT ( ) で否定したりできます!

ここでおそらく必要なのは次のとおりです。

@Before("pointcut1() || pointcut2()")

あなたの例では、論理 AND は常に空のセットにつながるため、OR はここで意味があります。

于 2014-11-11T19:22:54.283 に答える
0

|| を使用できます。オペレーター。ドキュメントhttp://docs.spring.io/spring-framework/docs/current/spring-framework-reference/html/aop.html (9.2.2 アスペクトの宣言) から:

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

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

@Pointcut("anyPublicOperation() || inTrading()")
private void tradingOperation() {}
于 2014-11-11T19:21:41.173 に答える