[Seasar-user:13496] [S2Container]インターフェースなしクラスの自動インジェクション要望

kubo [E-MAIL ADDRESS DELETED]
2008年 4月 1日 (火) 01:34:00 JST


久保です。

[Seasar-user:12729]の話と関連して
S2Container-2.4系に関する要望です。

現状S2Container-2.4(最新2.4.24)で、オートバインディングの対象となるのは、

A. インターフェース型のコンポーネント
B. プロパティ名で取得できるコンポーネント

です。

<A>
例えば、AaaインターフェースとAaaImpl実装クラスが
Diconに登録されていたら、以下のような宣言で
自動インジェクションされます。

public Aaa xxx;

これは特に問題ありません。

<B>
例えば、aaaという名前でAaa実装クラス(インターフェースなし)が
Diconに登録されていたら、以下のような宣言で
自動インジェクションされます。

public Aaa aaa;

しかし、名前を間違えるとインジェクションされません。

public Aaa abc;

これがインジェクションされるようになって欲しいというのが
今回の要望です。(プロパティ名を任意のものにできるようする)

[Seasar-user:12729]の話では、
> 実際一瞬だけそのように実装されてましたが、
> 過去との互換性のため、元に戻しました。
とのことでした。

よって、今の状態のままで対応は当然良くないと思われるので、
以下のような限定的な仕様で実現できないでしょうか?

<1>
diconファイルにて、何かしら属性を付けると、
そのコンポーネントだけはインターフェースなしでも
型だけでインジェクションされるようになる。

例.
<component class="xxx.Aaa" pojoBind="true"/>

<2>
バインディングアノテーションにて、何かしら属性を付けると、
そのコンポーネントだけはインターフェースなしでも
型だけでインジェクションされるようになる。

例.
@Binding(pojoBind=true)
public Aaa aaa;


安定板に入ろうとしているS2Container-2.4ではありますが、
その前に「これだけは」ということで要望とさせて頂きました。
検討して頂けませんでしょうか?


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