私はSpring 3.1.2.RELEASEをcglibの読み込み時に使用しています。カスタムの注釈と注釈付きのパラメータを持つメソッドで作業するためのアドバイスを得ようとしています。注釈付きパラメータを使用してSpring AOPのアドバイスに引数を渡すにはどうすればよいですか?
アドバイス:
@Aspect
public class MyAdvice
{
@Around("execution(@com.mycompany.locking.Lock * *(@com.mycompany.locking.LockVal(*), ..)) " +
"&& args(batch) && @args(propertyToLock)"
public Object lockAndProceed(ProceedingJoinPoint pjp, Object batch, LockVal propertyToLock) throws Throwable {
//Do stuff....
pjp.proceed();
}
}
ここでは、私がテストしていたクラスです:
public interface UpdateManager
{
public void processUpdate(MyBatchObject batch);
}
public class UpdateManagerImpl implements UpdateManager
{
@Lock
public void processUpdate(@LockVal("lockValue") MyBatchObject batch)
{
//Do stuff...
}
}
問題は、私は実行するためのアドバイスを得ることができないということです。私がポイントカット内の@argsとargs条件を削除した場合、アドバイスが起動しますが、必要なパラメータを取得するためにProceedingJoinPointを調べなければなりません。
アドバイスが起動しないのはなぜですか?私は間違ったことをしましたか?
編集:以下のポイントカットは、春とスタンドアロンプログラムとして作業を行います:
@Aspect
public class MyAdvice
{
@Around("execution(@com.mycompany.locking.Lock * *(@com.mycompany.locking.LockVal(*), ..)) " +
"&& args(batch)"
public Object lockAndProceed(ProceedingJoinPoint pjp, Object batch) throws Throwable {
//Do stuff....
pjp.proceed();
}
}
しかし、それはロード時ウィービングを使用したJBoss 6の下では動作しません。私は私の質問が、なぜ、JBoss 6ではなく、スタンドアローンのプログラムとして機能するのだろうと思いますか?
私はこれが古いと知っていますが、未回答のままです。適切と思われる場合は、私の答えを受け入れてupvoteしますか?ありがとう。 – kriegaex
私はそのプロジェクトから今に移行しましたが、どのようにコードを実行してもコードは機能しないと言えるでしょう。以前のバージョンとは異なる、JBoss 6のフラットクラスローダー+ cglibと関係がありました。 – Brad