ひがやすを技術ブログ

電通国際情報サービスのプログラマ

S2AOP

http://d.hatena.ne.jp/masataka_k/20040412#p1
で、ふれられていますが、AOP allianceに準拠しても
それほど、かわらないことが分かりました。
Jointpoint -> MethodInvocation
AroundAdvice -> MethodInterceptor
くらいです。S2として対応するのは、MethodInterceptorで
とりあえずは十分だと思ってます。
せっかく手を入れるので、AOP allianceでは標準化されていませんが
ThrowsInterceptorも実装しようと思ってます。
ThrowsInterceptorはマーカーインターフェースで
特にメソッドは定義されていません。
例外を処理したい場合は
Object handleThrowable(Throwable, MethodInvocation) throws Throwable
のメソッドを実装します。最初の引数は、Throwableのサブクラスを
指定できます。サブクラスを指定した場合は、サブクラス自身あるいは
サブクラスが親クラスである例外がThrowされたときに
呼び出されるようになります。
例外処理後、元のロジックを再実行したい場合は、
return invocation.proceed();
します。
例外処理後、そのまま例外をかえしたければ、
throw throwable;
します。
後、いまはDynamic Pointcutなんですが、Static Pointcutに
変えるかどうかもう一度パフォーマンス測定して決めたいと思います。