-インジェクションの仕様
MLに、横田さんの投稿を見て、便乗投稿しました。S2コンテナに、もっと根性つける仕様の案です。が、微妙なのはコンテナ外のコードでもできること。ただ、コンテナにあると便利。
1:Beanタイプ
- set***(Interface型)というプロパティのとき、
- プロパティ型をキーにしてS2コンポーネントを取り出す
- 取得できたとき、プロパティに設定(ここまでは今の仕様!)
- TooManyのとき、TooMany例外オブジェクトが持ってる重複コンポーネント定義のうち、プロパティ名のものを抽出。一個なら、プロパティに設定
- 型も名前もかぶっていたら、TooMany例外
2:Beanタイプの配列型
- set***(Interface型[])という配列型プロパティのとき、
- 要素型でS2コンポーネントを取り出す
- 取得できたら、1個のときは長さ1の配列にして突っ込む
- TooManyのとき、重複コンポーネントを全部取得して配列にして突っ込む。
3:Listタイプ
- add***(Interface型) というpublicメソッドがあったとき、
- メソッド引数型でS2コンポーネントを取り出す。
- 取得できたとき、メソッド引数にしてfire
- TooManyのとき、重複コンポーネントを全部繰り返し突っ込む
4:Mapタイプ
- put***(String, Interface型)というpublicメソッドがあったとき、
- メソッド引数型でS2コンポーネントを取り出す。
- 取得できたとき、名前も取得。あれば、二つをメソッド引数にしてfire
- TooManyのとき、重複コンポーネントを全部繰り返し名前取得して突っ込む
実はList型とかはS2JSFのDiconファイルとか見ると、initMethodでやってるところとかあるので、有効かと思うんだよね。