SpringでS2Daoを使う -その1-

 久しぶりの書き込みになってしまいましたが、ボチボチ書き込みして行こうと思います。
 最近Springを使う機会があったのですが、S2との違いに戸惑うばかり・・・。設定ファイルを書くのも面倒だし、Dao層にもS2Daoのように簡単に使えるものがないし。というわけで、SpringでBeanの自動登録とS2Daoが利用できないかと思い試してみました。こんなことをやる人はいないと思いますが、参考までにプロジェクト毎下記においておきます。一応、 S2Daoのs2-dao-examplesが基本動作することを確認しています。(一部を除く)
 http://www.asahi-net.or.jp/~wh6n-icmr/spring-s2dao-example.zip
 http://www.asahi-net.or.jp/~wh6n-icmr/spring-s2dao-example_src.zip (srcのみ)

 具体的に作成(修正)したプログラムは、下記となります。

  • S2Dao関連
    • SpringValueTypeFactoryImpl.java
  • Bean登録関連
    • AbstractAutoRegister.java
    • AbstractBeanAutoRegister.java
    • FileSystemBeanAutoRegister.java
      • S2本体のAutoRegisterのソースをベースに、SpringでBeanの自動登録をサポートするクラスを作成(インタフェースのインスタンス化も行います。)
      • BeanFactoryPostProcessorの実装クラスとなっているため、Bean登録時に実行されます。

Daoの登録は、beans.xml内の下記の設定で行っています。

<bean class="framework.autoregister.FileSystemBeanAutoRegister">
    <property name="addPackageName">
        <value>examples.dao</value>
    </property>
    <property name="addClassNames">
        <value>.*Dao,.*Manager</value>
    </property>
</bean>
<bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
    <property name="beanNames">
        <value>*Dao,*Manager</value>
    </property>
    <property name="interceptorNames">
        <list>
            <value>s2DaoInterceptor</value>
            <value>traceInterceptor</value>
        </list>
    </property>
</bean>

 このようにS2同様のイメージでBeanの自動登録が可能です。

【制限事項】
 (1)Employee2DaoClientTestが動作しません。(原因不明)
 (2)S2DaoTestCaseは利用できません。
 (3)S2Dao Tiger/S2Dao Backport175の動作確認はしていません。

 Spring初心者だったので、id:koichikさんのSpring Framework 入門記には大変お世話になりました。ありがとうございました。