8

私は AspectJ の初心者ですので、以下のアプローチに従って問題を解決する方法を教えてください。

    @Aspect
    public class TestAop {

    @Pointcut("execution(public * com.packg.foo.ClassOne.*(..))")
    public void fooPoint()

    @Pointcut("execution(public * com.packg.cat.ClassTwo.*(..))")
    public void catPoint()

    @Pointcut("execution(public * com.packg.roo.ClassThree.*(..))")
    public void rooPoint()

    @Around("fooPoint() || catPoint() || rooPoint()") 
    public Object myAdvice(ProceedingJoinPoint joinPoint) {
    //do something like joint proceed and all
    }

動作していないときは?3 つのポイントカットすべてを OR で組み合わせると。

それはいつ働いていますか?ポイントカットを 2 つだけ保持すると、機能します。

@aroundアドバイスのルールに違反していますか?複数の実行/ポイントカットを持つことは可能ですか?

答えを期待して...

4

2 に答える 2

2

ポイントカットごとに異なるアドバイスを作成することで、上記の問題を解決しました。別の解決策を見つけたばかりですが、まだ確信が持てません。

@Aspect
public class TestAop {

@Pointcut("execution(public * com.packg.foo.ClassOne.*(..))")
public void fooPoint()

@Pointcut("execution(public * com.packg.cat.ClassTwo.*(..))")
public void catPoint()

@Pointcut("execution(public * com.packg.roo.ClassThree.*(..))")
public void rooPoint()

@Around("fooPoint()") 
public Object myFooAdvice(ProceedingJoinPoint joinPoint) {
//do something like joint proceed and all
}

@Around("catPoint()") 
public Object myCatAdvice(ProceedingJoinPoint joinPoint) {
//do something like joint proceed and all
}

@Around("rooPoint()") 
public Object myRooAdvice(ProceedingJoinPoint joinPoint) {
//do something like joint proceed and all
}
于 2012-07-28T18:41:32.473 に答える