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

Koichi Kobayashi koichik
2005年 6月 7日 (火) 03:10:24 JST


小林 (koichik) です.

On Tue, 07 Jun 2005 01:43:48 +0900
Masataka Kurihara <[E-MAIL ADDRESS DELETED]> wrote:

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

むむ,そうすると [Seasar-user:2108] の内容を読み違えていたか...

> > コンテナに定義されていないコンポーネントに対する DI をコンテナが
> > 行うという発想自体に私は違和感を憶えるのですが...
> > それはコンテナの責務なのでしょうか?
> 
>   コンテナに責務も義理もないけど、そういう利用者が
> いるということです。で、その変更は、privateや
> finalや、ファクトリをちょっと変更してくれればよくて、

最初の方で提案のあった final を外す・private を protected に
といったあたりは私のワークスペース上では修正済みです.
一通り完結したらコミットします.

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

ここ (の前半),ちょっと理解できませんでした.
NullComponentDef を導入してしまうと,S2Container#getComponentDef() の
仕様が現在と変わってしまうということを [Seasar-user:2102] で
書いているのですが?
# 正確に言うと,コンポーネントが見つからない場合に 
# S2Container#getComponentDef() が NullComponentDef を返すように
# すると現在の仕様と異なってしまうということ.
# これは S2ContainerImpl なのでカスタマイズされたコードの話じゃないよね?

「今のS2の見え方は全然変らない」のなら反対しない (かもしれない)
のですが,そうじゃないからまずいのではないかという話なのですが...
やっぱり読み違えてる??

現在の S2Container#getComponentDef() は,該当するコンポーネント
定義が存在しない場合例外をスローします.これは S2 内の実装の話では
なくて,S2Containert というインタフェースの仕様です.
まさたかさんの [Seasar-user:2108] の内容はそれを変更して
NullComponentDef を返すというもので,「今のS2の見え方は全然変らない」
というものではないように思えます.
私には,まさたかさんは S2Container#getComponentDef() を S2 内の
実装として使われているに過ぎなくて,パブリックなインタフェースだと
考えていないように見えるのですが...
私がどこか勘違いしているでしょうか?


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




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