あなたの質問はSpring-Annotationsでタグ付けされているため、明らかにSpringを使用しています。Spring で必要なことを行うには、いくつかの手順があります。
構成でAspectJ/AOP-Supportを有効にします。
<aop:aspectj-autoproxy/>
pointcutを使用する Aspect (Spring AOP と AspectJ を参照) を記述します。@After
@annotation
@Aspect
public class TaskDoer {
@After("@annotation(doTaskAnnotation)")
// or @AfterReturning or @AfterThrowing
public void doSomething(DoTaskAtMethodReturn doTaskAnnotation) throws Throwable {
// do what you want to do
// if you want access to the source, then add a
// parameter ProceedingJoinPoint as the first parameter
}
}
次の制限事項に注意してください。
- AspectJ コンパイル時のウィービングを有効にするか、javaagent パラメーターを使用しない限り、foo を含むオブジェクトは Spring 経由で作成する必要があります。つまり、アプリケーション コンテキストから取得する必要があります。
- 追加の依存関係がなければ、インターフェイスを介して宣言されたメソッドにのみアスペクトを適用できます。つまり、foo() はインターフェイスの一部である必要があります。依存関係として cglib を使用すると、インターフェイスを介して公開されていないメソッドにアスペクトを適用することもできます。