[Seasar-user:4002] Re: 2つのプロジェクト間でのDIが行われない

吉岡 武志/インフォセンス [E-MAIL ADDRESS DELETED]
2006年 6月 30日 (金) 17:24:17 JST


お世話になります。吉岡です。

先ほどのmainProject と testProjectという2つのプロジェクトの
環境(クラスの出力先が2つある環境)で以下のdiconファイルの設定及びクラス
の配置を行いました。

[mainProject側のdiconファイル]
    <component class=

"org.seasar.framework.container.autoregister.FileSystemComponentAutoRegister">
        <initMethod name="addClassPattern">
            <arg>"jp.co.sample.dao"</arg>
            <arg>".*Impl"</arg>
        </initMethod>
    </component>
    <component class
="org.seasar.framework.container.autoregister.AspectAutoRegister">
        <property name="interceptor">daoInterceptorChain</property>
        <initMethod name="addClassPattern">
            <arg>"jp.co.sample.dao"</arg>
            <arg>".*Impl"</arg>
        </initMethod>
    </component>

[testPorject側のdiconファイル]
    <include = "mainProject側のdiconファイル">
    <component class
="org.seasar.framework.container.autoregister.ComponentAutoRegister">
        <property name="autoNaming">
            <component class
="org.seasar.framework.container.autoregister.DefaultAutoNaming"/>
        </property>
        <initMethod name="addClassPattern">
            <arg>"jp.co.sample.dao"</arg>
            <arg>".*Impl"</arg>
        </initMethod>
        <initMethod name="addReferenceClass">
            <arg>@[E-MAIL ADDRESS DELETED]</arg>
        </initMethod>
    </component>

[ クラスファイルの配置 ]
・MockJobDaoImplは、JobDaoをImplementsしています。
・MockJobDaoImplは、testPorject側の[jp.co.sample.dao]パッケージに配置しま
す。
・JobDaoImplは、JobDaoをImplementsしています。
・JobDaoImplは、mainProject側の[jp.co.sample.dao]パッケージに配置します。
・JobDaoのインターフェースは、mainProject側の[jp.co.sample.dao]パッケージに
配置します。

実行するクラス(testProject側のクラス)から、[testPorject側のdiconファイル]を
includeして
実行したところmainProject側のincludeが優先して読み込まれます。
(JobDaoImplが自動登録されている状態)

[ S2Container定義の分割とインクルードの文章引用 ]
コンポーネントの検索順は、先ず自分自身に登録されているコンポーネントを探し
て、見つからない場合は、
includeされている順に子供のS2Containerに登録されているコンポーネントを検索
し、最初に見つかった
コンポーネントが返されます。

上記の記述があったため、testPorject側にdiconファイルの定義が優先されると思
いました。

これは、mainProject側にインターフェースがあるためJobDaoImpl(mainProject側)
が自動登録される
のでしょうか?
それとも、diconファイルの定義が不正のため発生している現象でしょうか?

Seasar2を勉強している段階で、初歩的な質問かもしれませんが
ご教授のほどよろしくお願いします。

                                                           -  以上  -
*-----------------------------------------*
  吉岡  武志(Takeshi Yoshioka)





Seasar-user メーリングリストの案内