0
注釈値を取得し、 はここに私の注釈である春AOPは、私は、注釈から値を取得することができますどのように、私は春のAOPを使用しています
<aop:aspectj-autoproxy/>
<aop:config>
<aop:aspect ref="methodProfiler">
<aop:pointcut id="serviceMethod"
expression="(execution(* com.old..*(..)) or execution(* com.test..*(..))) and @annotation(com.test.profiler.ExecutionMethodProfiler)" />
<aop:around pointcut-ref="serviceMethod" method="profile"/>
</aop:aspect>
</aop:config>
そして、これはあります私serviceMethod:
public void profile(ProceedingJoinPoint jointPoint) throws Throwable {}
が今のように私はこのコードを使用して値を取得することができます:
MethodSignature signature = (MethodSignature) jointPoint.getSignature();
System.out.println(signature.getMethod().getAnnotation(ExecutionMethodProfiler.class).value());
私はそれが好きではありません、より良い方法はありますか?
私はそれをしよう、と私はエラーを取得しています: ネストされた例外は、java.lang.IllegalArgumentExceptionがある:ポイントカット – Breakidi
で結合していない:: 0でエラーが正式な最初のメソッドシグネチャにジョインポイントのパラメータを持つように私は私の答えを更新しました。 AspectJでは最初または最後のパラメータにすることができますが、おそらくSpringはここでもっと厄介です。さらに、パラメータ名がどこでも同じであることを確認してください:pointcut、arg-names、およびmethod signature。さもなければそれは縛られることができない。 – kriegaex
メソッドのシグネチャを細く更新すると、この例外が発生します。 コンストラクターが例外をスローしました。ネストされた例外はjava.lang.IllegalStateExceptionです:アドバイスで名前でバインドする2つの引数を見つけることが予想されますが、実際には1つの引数が見つかりました。 – Breakidi