Seasar2のDIはapp.diconに記述されているので、DIについての設定を追加する場合は、app.diconを変更する。
通常は、次のようにユーザ定義のみを集めた独自のdiconファイルを新規作成し、app.diconからそのファイルをインクルードする。
<include path="user.dicon"/>
特定のパッケージ配下にあるクラス全てをDIコンポーネントとして識別させるための設定は、次の通り。
<component class="org.seasar.framework.container.autoregister.FileSystemComponentAutoRegister">
<initMethod name="addClassPattern">
<arg>"rootpackage.dao"</arg>
<arg>".*DaoImpl"</arg>
</initMethod>
</component>
このように記述すると、「rootpackage.dao配下にある ".*DaoImpl" という名前のクラスをコンポーネントとして認識する」という意味になる。
例えばrootpackage.daoにTestDaoImplというクラスがあった場合、この設定でコンポーネントとして認識される。
コンポーネントとして認識されているクラスは、@Resource(@Bindingでも可)アノテーションでDIできる。
@Resource
private TestDao testDao;
このように記述することで、TestDaoImplが自動でインジェクションされる。
(newしなくても、最初からクラスに生成済みのインスタンスが入っている)
上記設定は、ファイルシステムにソースファイルがある場合の設定である。
JARファイル内のクラスを探す場合は、JarComponentAutoRegisterを用いる。
0 件のコメント:
コメントを投稿