[Seasar-user:4018] Re: 2つのプロジェクト間でのDIが行われない
Koichi Kobayashi
[E-MAIL ADDRESS DELETED]
2006年 7月 4日 (火) 13:00:26 JST
小林 (koichik) です.
Date: Tue, 4 Jul 2006 10:11:20 +0900
From: "吉岡 武志/インフォセンス" <[E-MAIL ADDRESS DELETED]>
To: [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:4016] Re: 2つのプロジェクト間でのDIが行われない
> 違っている
> 気がします。ただ、どこがどう間違っているかが私自身理解ができていませんので
> 以下に、どういったことがやりたいのか簡単に記述させて頂きます。
>
> ■パッケージ階層
> [mainProject] -- Mainプロジェクト
> + jp.co.sample.dao
> ・JobDao.java
> ・JobDaoImpl.java
> + jp.co.sample.dbaccess
> ・CountryDao.java
> + jp.co.sample.service
> ・JobService.java
> ・JobServiceImpl.java
> + jp.co.sample.dicon
> ・実装用のdiconファイル(main.dicon)
JobServiceImpl はどの dicon で登録していますか?
もし main.dicon で登録していると,main 側の JobDaoImpl が
DI されてしまいます.
main.dicon に登録されているコンポーネントからは test.dicon に
登録されているコンポーネントは見えないからです.
# test.dicon 側からは main.dicon 側が見えます.
> ・JobServiceImplに対してMockJobDaoImplをDIさせたいです。
これを実現するには,JobServiceImpl を登録している dicon から
MockJobDaoImpl が見える必要があります.
> 上記の内容を実現するためにtest.diconをどう最適に定義すればよいかで悩んでい
> る次第です。
手っ取り早い方法は test.dicon に JobServiceImpl を登録することです.
その JobServiceImpl には MockJobDaoImpl が DI され,JobServiceTestCase
にはその (MockJobDaoImpl が DI された) JobServiceImpl が DI されます.
あるいは,test.dicon から main.dicon をインクルードするのではなく,
main.dicon から Dao の定義を allDao.dicon として分離し,それを
main.dicon からインクルードするようにするようにします.
[main.dicon]
<components>
<include path="allDao.dicon"/>
・・・
</components>
そして mainProject の allDao.dicon には main 側の Dao を登録します.
同じように testProject にも allDao.dicon を作成し,そこでは test 用の
Dao (Mock) を登録します.
CountryDao など,main 側の Dao も必要なものはこちらにも登録します.
そして JobServiceTestCase は main.dicon をインクルードします.
main.dicon は mainProject にあるものが使われますが,それが
allDao.dicon をインクルードしようとすると,クラスパスで先に見つかる
allDao.dicon がインクルードされます.
testProject のクラスパスが mainProject を先に見に行くように
なっていなければ,testProject の allDao.dicon がインクルードされる
はずです.
--
<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 メーリングリストの案内