注釈付きのAspectJを使用して、すべてのAspectJのアドバイスを無効にしてメソッドのアドバイスをユーザーの入力から停止する方法を見つけようとしています(ブールトラッキング= false)。if()メソッドとユーザーの入力によるメソッドのアドバイスを停止するためのAspectJの無効化
ここはメインクラスのコードです。
package testMaven;
public class MainApp {
public static void main(String[] args) {
testing test = new testing();
test.aa(1000);
test.setDd(3);
}
}
ここにはアスペクトアノテーションクラスがあります。
package testMaven;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.annotation.Before;
@Aspect
public class aspecter {
public aspecter(){
}
boolean tracked = false;
@Before("execution(* testMaven.testing.aa(..)) && if(tracked)")
public void testBefore(){
System.out.println("yooi");
}
@Before("execution(* testMaven.testing.setDd(..)) && if(tracked) ")
public void testBefore2(){
System.out.println("yooi2");
}
}
場合(追跡)の実行 "トークンに構文エラー "のエラーになります(* testMaven.testing.aa(..))& &場合(追跡)"、" 注釈スタイルで、もし( ...)pointcutsにはコードを含めることはできません。 if()を使用し、注釈付きメソッド "expected"にコードを挿入します。
私の仕様に基づいてif()メソッドを指定できましたか?
おかげ
使用しているAspectJとJavaのバージョンは何ですか?コンパイル時の織り方やローディングの時間を使用していますか? https://eclipse.org/aspectj/doc/released/adk15notebook/ataspectj-pcadvice.htmlの「if()ポイントカット式」のセクションを読んでいましたか? –
@WimDeleau私は1.8.9のMavenとJava8を使用しています。はい、私は[This](https://www.eclipse.org/aspectj/doc/next/adk15notebook/ataspectj-pcadvice.html#d0e3697)とStackoverflowの他の質問に従っていますが、それらの答えは本当に複雑です。私は質問のための日食のチュートリアルに従っています –