というアスペクトを取得できません。したがって、ドメイン内のオブジェクトの状態が変化したときにAspectJを使用して処理イベントを処理する方法を調べ始めました。NewbieはAspectJで作業しています:
効果的には、私のドメインにすべてのセッターメソッドをラップするアドバイスを書いてみたいです。アドバイスが呼び出されると、設定されているフィールドの初期値をチェックし、setterを実行してから、setterの実行後に値をチェックします。値が変更されると、イベントリスナーにイベントが発生し、変更が通知されます。
ここにあるチュートリアルを使用しました:http://www.andrewewhite.net/wordpress/2010/03/17/aspectj-annotation-tutorial/、しかし、私は助言の呼び出しを行うことができません。私はアドバイスを織り込むためにLTWメソッドしか使用していないことに注意してください。私はAspectJ言語を使ってアドバイスを書いておらず、それをプリコンパイルしていません。
(私のテストスイートのMETA-INFで)私のaop.xmlは次のようになります場合は
package domain.aop; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; @Aspect public class TestAspect { @Around("call(* domain.*.set*(..))") public void aroundSetMethods (JoinPoint jp) { System.out.println ("aroundSetMethod called"); } }
:私が作成した
<aspectj> <aspects> <aspect name="domain.aop.TestAspect"/> </aspects> </aspectj>
アスペクトクラスには、次のようになりますテストケースを実行すると、メソッド(domain.Error.setTask())が呼び出されることがわかります(ブレークポイントを設定することによって)。これが私のアドバイスを引き起こすはずだと私は信じていますが、私はアドバイス方法には絶対に入りません。
ここで私が間違っていることを指摘してください。
ありがとうございました
それはそれです。私は@Aroundアノテーションが、ウィーバーにどのクラスがインストルメントされるべきかを判断させるのに十分であったという印象を受けました。明らかに、設定を少しだけ追加しただけです。ありがとう... – Steve