2010年11月19日

Aspectjを使用したインターセプターでの処理対象メソッド取得

どうも、塩内藤です。

タイトルの処理がしないといけなくなったんですが、以前インターセプトについて記事を書いたのを思い出して、見てみました。。。

@RequestMappingが付与されたメソッドのインターセプトサンプルは書いてあったけど、今回やりたい事は書いてなかった。。。


ということで、サンプル

実際はタイトルの処理に加えて、ターゲットのメソッドに付与されているアノテーションを取得するという処理


@Around("execution(* sample.hoge.impl.*Impl.*(..))")
public Object doHogeImplIntercept(ProceedingJoinPoint pjp) throws Throwable {
Object result = null;

MethodSignature signature = (MethodSignature) pjp.getSignature();
HogeAnnotation hogeAnnotation = signature.getMethod().getAnnotation(HogeAnnotation.class);

hogeAnnotation.value();

result = pjp.proceed();

return result;
}


これで、sample.hoge.implパッケージ配下にあるクラスのうち、接尾語がImplのもので、その中にある全てのメソッドの処理をインターセプト

あとはpjp.getSignature()の戻りをMethodSignatureして、処理対象メソッドからアノテーションを取得します。

posted by しお at 19:46| Comment(0) | TrackBack(0) | spring