[Seasar-user:3454] Re: AutoRegister の記述順
Koichi Kobayashi
[E-MAIL ADDRESS DELETED]
2006年 4月 4日 (火) 01:20:22 JST
小林 (koichik) です.
Date: Wed, 29 Mar 2006 18:14:33 +0900
From: 松山 大樹 <[E-MAIL ADDRESS DELETED]>
To: [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:3446] Re: AutoRegister の記述順
> s2jsf-example の、app.dicon には、次のように設定されています。
> -------------------------------------------------------------------------
> <component class="org.seasar.framework.container.autoregister.FileSystemComponentAutoRegister" >
> <property name="instanceDef">@[E-MAIL ADDRESS DELETED]</property>
> <initMethod name="addClassPattern">
> <arg>"examples.jsf.action.impl"</arg>
> <arg>".*ActionImpl"</arg>
> </initMethod>
> </component>
> <component class="org.seasar.framework.container.autoregister.AspectAutoRegister" >
> <property name="interceptor">actionInterceptorChain</property>
> <initMethod name="addClassPattern">
> <arg>"examples.jsf.action.impl"</arg>
> <arg>".*ActionImpl"</arg>
> </initMethod>
> </component>
> -------------------------------------------------------------------------
> コンポーネントの自動登録の設定があり、その次にアスペクトの自動登録の設定があります。
> これだと、
> 「アスペクトを適用されるコンポーネントは、
> アスペクトの自動登録の設定よりも後に記述する必要があります。」
> という記述と異なっていると思うのですが、なぜ *ActionImpl に対して、actionInterceptorChain は
> 正常に適用されているのでしょう?
「自動登録の設定」は「アスペクトを適用されるコンポーネントの設定」
とは異なります.
最初に二つのコンポーネントがあります.
<component class="ComponentAutoRegister"/>
<component class="AspectAutoRegister"/>
まず,ComponentAutoRegister が初期化され,いくつかの
コンポーネントが自動登録されます.
これはコンテナの最後に新たなコンポーネントの定義を
追加します.
つまり,次のように定義したのと同じようになります.
<component class="ComponentAutoRegister"/>
<component class="AspectAutoRegister"/>
<component class="FooActionImpl"/>
<component class="BarActionImpl"/>
ここで,アスペクトを適用されるクラスはアスペクトの
自動登録よりも後ろに追加されることになります.
そして AspectAutoRegister が初期化され,アスペクトが
適用されます.
--
<signature>
<name>Koichi Kobayashi</name>
<e-mail>[E-MAIL ADDRESS DELETED]</e-mail>
</signature>
Seasar-user メーリングリストの案内