2

パッケージ内のメソッドから入力パラメーターを取得して何らかの操作を行い、そのメソッドに結果を返すアスペクトを (Spring で) 記述しようとしています。

それは可能ですか?

例えば:

public MyClass {

 Public void execute (Object object)
  {
     //doSomeLogic with the returned object from the aspect
  }
}

@Aspect
public class ExecutionAspect {




@Before(// any idea?)
        public void getArgument(JoinPoint joinPoint) {


         Object[] signatureArgs = joinPoint.getArgs();
         for (Object signatureArg: signatureArgs) {
             MyObject myObject=(MyObject)signatureArg;
             //do some manipulation on myObject
}
                  //Now how do I return the object to the intercepted method?


    }

ありがとう、レイ。

4

1 に答える 1

10

戻り値を変更したい場合は、@Aroundアドバイスを使用する必要があります。

@Aspect
public class AroundExample {

  @Around("some.pointcut()")
  public Object doSomeStuff(ProceedingJoinPoint pjp) throws Throwable {

    Object[] args = joinPoint.getArgs(); // change the args if you want to
    Object retVal = pjp.proceed(args); // run the actual method (or don't)
    return retVal; // return the return value (or something else)
  }

}

このメカニズムについては、 Spring Reference > AOP > Around Adviceで説明しています。

于 2013-08-14T09:07:45.717 に答える