1

入力として文字列を受け取るメソッドがあり、アスペクトがメソッドの実行をインターセプトし、特定の条件で文字列を変更し、結合ポイントが新しい入力を受け取るようにしたいので、わかりません変形したということです。

これは可能ですか、それともセキュリティ上の理由で不可能ですか?

4

2 に答える 2

2

AspectJ を使用すると、次のようにアラウンド アドバイスを宣言できます。

 public aspect TransformationAspect {
   pointcut transform(String s) : call(* yourMethodName(..)) && args(s);

   Object around(String s): transform(s) {
     // ... Transform String here
     return proceed(s);
   }
 }

コードは、コンパイル時または実行時に AspectJ Java エージェントを使用して実装する必要があります。

于 2012-05-04T16:44:21.600 に答える
0

これは可能ですが、使用する AOP テクノロジによって異なります。

EJB 3.x または CDI では、次の疑似コードのようになります。

Object intercept( InvocationContext context ) {

  Object[] params = context .getParameters();

  //modify the string and update the array
  //the value of i depends on the method signature (the parameter position)
  //and getting it is left for you as an excersise
  params[i] =  modify( (String)params[i] );  

  context.setParameters( params );
  return context.proceed();
}
于 2012-05-04T16:48:27.087 に答える