[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 メーリングリストの案内