ひがやすを技術ブログ

電通国際情報サービスのプログラマ

setterインジェクションの配列サポート

これまで、あるコンポーネントが複数のコンポーネントを必要としたとき、addXxx(Xxx xxx)みたいなメソッドを作って、initMethodタグで追加していました。












ただ実際に開発していると、対象となるクラスを追加するたびに、diconファイルを修正する必要があり、めんどくさく思ってました。修正し忘れだとかもあるし。なによりも開発中に設定ファイルを書く量が増えていくってSeasarらしくない!!!
それで、setterメソッドの引数が配列で、配列の要素がインターフェースの場合、自動的にそのインターフェースを実装しているコンポーネントをDIするようにします。例えば、

public void setXxxs(Xxx[] xxxs);
のようなメソッドを定義しておくと、インターフェースXxxを実装しているコンポーネントを自動でDIするのです。自動でDIさせたくないときは、@Binding(bindingType=BindingType.None)のように指定すればOKです。