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

Masataka Kurihara kurihara
2005年 6月 7日 (火) 01:43:52 JST


栗原です。

> injectDependency() は instance="outer" として「定義された」
> コンポーネントに DI するものということで,ひがさんから
> それ以外の用途は考えていないと説明があったのですが...
> その仕様を変更しようということでしょうか?

  いや、全然。仕様は変更してくれなくていいです。一番
はじめの投稿の段階では、仕様変更の話をしてましたが、
今は仕様変更を説明するのもニーズを訴えるのも難しいみ
たいなんで、すでに全然トーンダウンしていて、Deployer
とAssemblerと、DeployerFactoryを、利用者リスクで変更
したいときに変更できるというようにしていてくれればい
いのではないかという提案をしています。私のローカルで
の利用方法を好まない方や、既存の資産に手を入れたく
ない人にまでそのリスクを共有してほしいという希望では
ありません。

> それだと未定義のコンポーネントに DI したいわけじゃなくて,
> 単に定義ファイルに不備があった場合でも一見うまく動いてしまうので
> 個人的には賛成しかねます.

  そうですね。かなり苦しいけど、リスクはゼロじゃない。

> コンテナに定義されていないコンポーネントに対する DI をコンテナが
> 行うという発想自体に私は違和感を憶えるのですが...
> それはコンテナの責務なのでしょうか?

  コンテナに責務も義理もないけど、そういう利用者が
いるということです。で、その変更は、privateや
finalや、ファクトリをちょっと変更してくれればよくて、
先の例外がでるタイミングを変えるのがNGなら、変えなく
てもできることです。私がhasComponent()でテストすることが
単にそのとき思いつかなかっただけですから。
  NullComponentDefは、その後、ComponentDeployerFactory
を経由して、そこをカスタマイズしていれば動作するし、
していなければ既存と同じ例外がでるようにしておけば
よいのです。今のS2の見え方は全然変らないんだけど、
特殊な用途を考えたときに、それが満たせるフレームワーク
にもなってくれていると、ごく少数かもしれませんが、ニッチ
なニーズも埋められるということです。





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