ひがやすを技術ブログ

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

Field Injectionはなぜ必要なのか

そもそもオブジェクト指向における、カプセル化の殻を壊してまでインジェクションするってことは余程のことだと思うけど、そこまでしてフィールドインジェクションが可能になっている理由はなんなのだろう。

DIのためだけに、setterメソッドを追加するのは、無駄な場合もあるためですね。DIコンテナしかそのプロパティの値を設定しないなら、Field Injectionはありだと思います。
値を設定するときに、何らかの処理を追加したくなったら、setterメソッドを追加することで使う側には影響なく振る舞いの追加ができますから。
Seasar2は、テストについてもS2Unit等でフルサポートしますから、テスト時にモックオブジェクトをセットしたい場合でも、Field Injectionを使うことができます。