次の前の質問(AspectJ-ジョインポイント式の注釈の存在が認識されない)から、
私の目標:ある側面では、一致する関数の数に関係なく、すべての注釈付きパラメーターを抽出/取得できるようにしたいと考えています。(そして、いくつかの治療を適用しますが、それはこの質問の範囲ではありません)
だから今のところ、これは私がしたことです(機能していません):
@Before("execution (* org.xx.xx.xx..*.*(@org.xx.xx.xx.xx.xx.Standardized (*),..))")
public void standardize(JoinPoint jp) throws Throwable {
Object[] myArgs = jp.getArgs();
getLogger().info("Here: arg length=" + myArgs.length);
// Roll on join point arguments
for (Object myParam : myArgs) {
getLogger().info(
"In argument with " + myParam.getClass().getAnnotations().length
+ " declaread annotations");
getLogger().info("Class name is " + myParam.getClass().getName());
// Get only the one matching the expected @Standardized annotation
if (myParam.getClass().getAnnotation(Standardized.class) != null) {
getLogger().info("Found parameter annotated with @Standardized");
standardizeData(myParam.getClass().getAnnotation(Standardized.class), myParam);
}
}
}
これはアドバイスと一致するコードです:
public boolean insertLog(@Standardized(type = StandardizedData.CLIPON) CliponStat theStat) {
// ...
}
そして、junitテストによって生成されたトレース:
INFO: ICI: arg lenght=1
INFO: In argument with 0 declaread annotations
アノテーションが検出されないようです
だから私の質問は:特定の注釈を持つパラメータを検出する方法は?
誰かがそれを行う方法を知っていますか?
よろしくお願いします。
よろしく。
編集:私はこのスレッドのポイントカットマッチングメソッドを注釈付きパラメーターで見つけ、同じことについて議論し、与えられたソリューションを適用しましたが、機能しません。