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