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

Koichi Kobayashi koichik
2005年 6月 7日 (火) 00:44:09 JST


小林 (koichik) です.

On Mon, 06 Jun 2005 17:33:21 +0900
Masataka Kurihara <[E-MAIL ADDRESS DELETED]> wrote:

>   例外の出所を変えたいのは、S2ContainerImplの、
略
> において、ComponentNotFoundになっちゃうからです。NullConponentDefを
> 返してインジェクション処理をしたいのですね。外部のUtilではなくて、コンテ
> ナの機能として定義無しのコンポーネントにouterインジェクションする方法
> です。

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

> public void injectDependency(
>     Object outerComponent, Class componentClass) {
>   ComponentDef def;
>   if(hasComponentDef(componentClass)) {
>     def = getComponentDef(componentClass);
>   } else {
>     def = NullComponentDef.getInstance();
>   }
>   def.injectDependency(outerComponent);
> }
> 
> こういう感じでOKです。

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

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

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




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