[Seasar-user:18450] Re: [Teeda] インターフェースに対する複数の実装のDI
松山 大樹
[E-MAIL ADDRESS DELETED]
2009年 9月 4日 (金) 19:23:58 JST
松山です。
と思ったのですが、dateCheckerToday、dateCheckerYesterday は正常にDI される
のですが、その中に定義している、Dao とかが、DI されていませんでした。
こんな感じで定義しています。
■checker.dicon
<component class="org.seasar.framework.container.autoregister.FileSystemComponentAutoRegister">
<property
name="instanceDef">@[E-MAIL ADDRESS DELETED]</property>
<initMethod name="addClassPattern">
<arg>"jp.co.hoge.userData.maintenance.checker"</arg>
<arg>".*Impl"</arg>
</initMethod>
</component>
■app.dicon
<components>
<include path="convention.dicon"/>
<include path="aop.dicon"/>
<include path="app_aop.dicon"/>
<include path="teedaExtension.dicon"/>
<include path="dao.dicon"/>
<include path="dxo.dicon"/>
<include path="j2ee.dicon"/>
<include path="checker.dicon"/>
</components>
何が足りないでしょう?
> 松山です。
>
>> 実装クラスは dicon に定義しているのでしょうか?
>
> していませんでした...
> たぶん、
> 「AutoNaming
> AutoNamingによってコンポーネントに自動的に名前をつけることができます。
> org.seasar.framework.container.autoregister.DefaultAutoNaming
> クラスの完全修飾名からパッケージ部分を除き、最後がImplまたはBeanで終わっていたら削除し、 先頭を小文字
> にした名前をコンポーネントの名前に設定します。 例えば、aaa.HogeImplクラスの場合、コンポーネント名は、
> hogeになります。」
> というのが頭にあって、***Impl は勝手に登録されているものだと思いこんで
> いたのだと思います。
>
> dicon に登録したら、DI されました。
>
> お騒がせしました。
>
>
>> 小林 (koichik) です.
>>
>> Date: Fri, 04 Sep 2009 15:14:31 +0900
>> From: 松山 大樹 <[E-MAIL ADDRESS DELETED]>
>> To: [E-MAIL ADDRESS DELETED]
>> Subject: [Seasar-user:18447] [Teeda] インターフェースに対する複数の実装のDI
>>
>>> 条件に応じて、どちらかを使いたいので、
>>>
>>> public class AddPage {
>>> public DateChecker dateCheckerToday;
>>> public DateChecker dateCheckerYesterday;
>>>
>>>
>>> }
>>>
>>> と定義しているのですが、ここにDI されてきません。
>>>
>>> 記述の方法がまずいでしょうか?
>> 実装クラスは dicon に定義しているのでしょうか?
>> その場合のコンポーネント名はどうなっていますか?
>>
>>
>
>
--
::: 株式会社WOWOWコミュニケーションズ http://www.wowcom.co.jp/
::: ICTシステムDiv.
::: WebソリューションサポートUnit.
::: 松山 大樹 - [E-MAIL ADDRESS DELETED]
::: tel 045-683-3684 fax 020-4622-7043
Seasar-user メーリングリストの案内