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

Koichi Kobayashi koichik
2005年 6月 1日 (水) 15:31:30 JST


小林 (koichik) です.

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

> 議論につきあわせてしまってすみません。

デートもスーパーコバックス (微謎) なので問題ありません.
# そろそろお出かけですが (遅っ).

> #ちなみにさらに言えばdiconファイルなしに空のS2Containerを生成してそこに
> #全てのcomponent定義をregisterしたかったり、既存のS2Containerからcomponent
> #定義をunregisterしたかったりもします。そこまで現時点のS2の機能で実現でき
> #るのかは未調査ですが。^^;

ヘビーですね.(^^;
っていうか,builder を作る方が適切かもしれませんね.

> > そうじゃなくて,コンポーネントを「未定義のまま」DI したいという
> > 要件があるのであれば検討する必要があるかも.
> 
> すいません、ちょっと意味が分からないのですが「未定義のままDIしたい」
> とは具体的にはどういうことでしょうか。

ランタイムも含めて S2 コンテナにコンポーネントの情報を持たせることなく
DI したいのか,ということです.
その場合,DI されたコンポーネントは他のコンポーネントに対する DI の
対象にはならなくなるというのが大きな違いではないかと.

> > 「実行時に定義する」と「定義しない」は全然違いますから.
> > どっちなんでしょう?
> 
> ちなみに私のケースでは「定義したくてもできない」という感じですので、
> injectDependencyの直前に定義してregisterすればそれで済みそうです。

デザインタイムでは「できない」であって,ランタイムで「できない」わけでは
ないですよね.
# インスタンスは常にクラスを持ち,そのクラスは不変の Java で
# ランタイムに「できない」ことは考えにくいですが.

なので,「定義できない」ではなくて「定義しない」ということ.
コンテナから他のコンポーネントを取ってきて DI したいだけで,
それ自身について S2 には全く関与して欲しくないというケースだと,
register() は要求を満たさないという事になります.
そういう要求がほどほどにあるのなら,DependencyInjectionUtil とか
作ってもいいかも〜.

DependencyInjectionUtil#injectDependency(Object target, S2Container container)

みたいな.この中で target を introspection してコンテナから取ってきた
コンポーネントを DI .コンテナ自身は target に全くノータッチ.


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




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