ひがやすを技術ブログ

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

Field Injection

EJB3のサポートに伴い、Seasar2でField Injectionをサポートします。使い方は、EJB3と同じでこんな感じ。

@EJB
private Foo foo;

この場合は、次の順序で対象となるコンポーネントを決定します。

@EJB(name="xxx")のように名前を指定した場合には、フィールド名の変わりに指定した名前が使われます。@Resourceも@EJBと同様です。
Field Injectionをdiconファイルで書く場合ですが、propertyタグをそのまま流用しようと思います。フィールド名とプロパティ名をあわせておけば、Kijimunaもそのまま使えるからです。(そのうち対応してね。 -> 松田さん)
Injectionするときのロジックは、プロパティ名と同じ名前のフィールドがあれば、Field Injectionそうでなければ、これまでと同様Setter Injectionをするようにします。
パラメータ情報を@Resourceを使って、設定するには、次のようにします。まず、フィールドを用意します。

@Resource
private int max;

次にdiconファイルで値を設定します。

<property name="max">10</property>