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