No. 3 AOPの適用の順番なり
ドキュメントベースでないのがあれだけど。
interceptorを定義した際に、どのような順番で適用されるのかをコードベースで確認してみた。
customizer.diconは以下のように定義
<component name="pageCustomizer" class="org.seasar.framework.container.customizer.CustomizerChain"> <initMethod name="addAspectCustomizer"> <arg>"test01Interceptor"</arg> <arg>"do.*, initialize, prerender"</arg> </initMethod> <initMethod name="addAspectCustomizer"> <arg>"test02Interceptor"</arg> <arg>"do.*, initialize, prerender"</arg> </initMethod> ・・・省略
test01とtest02のinterceptorを作成して実行。
ログをみると、
********** test01 start ********** ********** test02 start ********** 2008-01-06 12:21:34,465 [http-8080-Processor25] DEBUG org.seasar.extension.jta.TransactionImpl - トランザクションを開始しました。tx=[FormatId=4360, GlobalId=1199622094465/0, BranchId=] 2008-01-06 12:21:34,470 [http-8080-Processor25] DEBUG org.seasar.extension.jta.TransactionImpl - トランザクションをコミットしました。tx=[FormatId=4360, GlobalId=1199622094465/0, BranchId=] ********** test02 end ********** ********** test01 end **********
普通に上から呼ばれる感じか。