[Seasar-user:16304] Re: [HotDeploy]クリエータで自動登録したコンポーネントが、インターフェースの配列プロパティに自動バインディングされない

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2008年 11月 16日 (日) 12:00:42 JST


小林 (koichik) です.

Date:    Sun, 16 Nov 2008 11:08:41 +0900
From:    Shotaro Tsubouchi <[E-MAIL ADDRESS DELETED]>
To:      [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:16303] [HotDeploy]クリエータで自動登録したコンポーネントが、インターフェースの配列プロパティに自動バインディングされない

> dicon に手動で登録した場合や、COOL Deploy では問題ないのですが、
> インタフェースを持つクラスをクリエータで自動登録した場合、
> そのインタフェースの配列をコンポーネントのプロパティとして定義しても、
> 自動バインディングされません。

HOT deploy の場合はファイルシステムや Jar の中を
走査するわけではなく,プロパティの名前や型から
ルールに従って実装クラスを求めます.
そのため,インタフェースを実装したクラスを
全て探すことはできません.
HOT deploy でファイルシステム等を走査すると
リクエストの度にアプリケーション全体を初期化
し直すことに等しくなり,サクサクとはいかなく
なってしまうからです.
そのため配列型のプロパティから自動登録は行って
いません.

> とりあえず、手動登録して回避していますが、
> HOT Deploy 時の自動登録でも自動バインディングされてくれるとありがたいです。

自動登録するように修正するとしても,最初に見つかった
実装クラスのインスタンスを唯一の要素とする長さが
1 の配列を DI することにしかならないので,意味が
ないと思います.

配列で DI したいものについては AutoRegister で
登録してください.


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