[Seasar-user:2070] Re: injectDependency について

Koichi Kobayashi koichik
2005年 6月 1日 (水) 14:26:50 JST


小林 (koichik) です.

On Wed, 01 Jun 2005 14:04:08 +0900
YOKOTA Takehiko <[E-MAIL ADDRESS DELETED]> wrote:

> ちょっと分からなくなってきました。自分の受けた印象では、S2外で生成され
> たコンポーネントにS2管理下のコンポーネントを注入したい(and S2外コンポー
> ネントの初期化処理を行ないたい)というニーズがあって、それを満たすため
> にouterとinjectDependencyが設けられたという風に感じていたのですが、そ
> うではないのでしょうか。

「S2 の管理下にある・ない」と「インスタンス生成を S2 が行う・行わない」は
別物ということですね.
「管理下にある」はちょっと分かりにくいのですが,injectDependency() は
あくまでも「S2 が把握しているコンポーネント」について,その「インスタンス
生成のみ」を S2 の外部で行うためのもの,と考えるのがよいかと.

> 一方で、もしもouter&injectDependencyが満たすニーズが「S2外で生成された
> コンポーネントにS2管理下のコンポーネントを注入したい」ではないのであれ
> ば、「S2外で生成されたコンポーネントにS2管理下のコンポーネントを注入し
> たい」というニーズを満たす手段の提供を検討いただければ助かります。(が、
> それはS2の外側でどうにかしてね、ということであればそれはそれで仕方ない
> と思っています。)

「outer&injectDependencyが満たすニーズ」は「S2 が把握はしているけれども
S2 外で生成されるコンポーネントに S2 管理下のコンポーネントを注入する」
ですね.
で,横田さんのニーズは「S2 が把握していないコンポーネントに S2 管理下の
コンポーネントを注入する」ということなのでしょうか?
ここで「把握していない」は「事前に把握していない」ではなくて,DI を
行うその時点も含めて「S2 はそのコンポーネントに関する情報を保持しない」
という意味でのことになりますが.

それはつまり,実行時になって分かったある型のインスタンスについて,
DI するのは一度きりということ?
実行時になって分かったある型の複数のインスタンスについて DI するのであれば
register() する方がいいと思いますが,そうじゃなくて injectDependency() に
こだわるというのは,実行時になって分かったあるクラスにつき DI するのは
1 インスタンスだけで,register() するのが不適切ということなんでしょうか?

-- 
<signature>
    <name>Koichi Kobayashi</name>
    <e-mail>[E-MAIL ADDRESS DELETED]</e-mail>
</signature>




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