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

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2006年 6月 30日 (金) 01:30:16 JST


小林 (koichik) です.

Date:    Thu, 29 Jun 2006 22:48:13 +0900
From:    "吉岡 武志/インフォセンス" <[E-MAIL ADDRESS DELETED]>
To:      [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:3997] 2つのプロジェクト間でのDIが行われない

> mainProject と testProjectという2つのプロジェクトを作成し
> testProjectのビルドパスにmainProjectを追加している環境を構築しています。

ということは,class ファイルの出力フォルダも二つあることに
なりますね.

FileSystemComponentAutoRegister は,それ自身が定義された
dicon ファイルの存在するディレクトリを基点として .class
ファイルを探し,コンテナに登録します.

> [diconの定義]
> <component class
> ="org.seasar.framework.container.autoregister.FileSystemComponentAutoRegister">

おそらく,この dicon ファイルが mainProject の方にあるのでは
ないでしょうか?

自動登録するクラスが全て testProject の方にあるなら,
dicon ファイルを testProject の方に移動すれば解決すると思います.

自動登録するクラスが mainProject と testProject の両方にあるなら,
FileSystemComponentAutoRegister に代えて ComponentAutoRegister を
使って,

<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>@mainProjectにあるクラス@class</arg>
      </initMethod>
      <initMethod name="addReferenceClass">
            <arg>@testProjectにあるクラス@class</arg>
      </initMethod>
</component>

とすることで,mainProject と testProject の両方からクラスが
自動登録されるようになるはずです.


-- 
<component name="koichik">
    <property name="fullName">"Koichi Kobayashi"</property>
    <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
    <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>




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