Seasar - DI Container with AOP -
Seasar DI Container with AOP
S2Dao.NET TOPページへ

S2Dao.NET - Diconファイル

Daoをdiconファイルに定義して、コンテナにコンポーネント定義します。S2Dao.NETの機能を利用するためには登録したDaoに対して、 S2Dao.NETのインターセプターを適用します。diconファイルの詳しい設定方法については、 DIContainerのドキュメントを参照して下さい。

S2DaoInterceptorの適用

S2Dao.NETの機能を使用するには登録したDaoに対して、 Seasar.Dao.Interceptors.S2DaoInterceptorをaspectタグで指定します。 これはS2Dao.NETがAOPを利用して作られている為です。 AOPについてはAOPのドキュメントを参照して下さい。

diconファイルは以下のように、Daoを登録するdiconファイル(Dao.dicon)と、 S2Dao.NETのコンポーネントを登録するdiconファイル(S2Dao.dicon)の2種類用意します。

Dao.dicon
<components>
    <include path="S2Dao.dicon"/>
    <component class="Example.Dao.IEmployeeDao">
        <aspect>S2Dao.Interceptor</aspect>
    </component>
</components>
S2Dao.dicon
<components namespace="S2Dao">
    <include path="Ado.dicon" />
    <component class="Seasar.Extension.ADO.Impl.BasicDataReaderFactory" />
    <component class="Seasar.Extension.ADO.Impl.BasicCommandFactory" />
    <component class="Seasar.Dao.Impl.FieldAnnotationReaderFactory" />
    <component class="Seasar.Dao.Impl.DaoMetaDataFactoryImpl" />
    <component name="Interceptor"
        class="Seasar.Dao.Interceptors.S2DaoInterceptor"/>
</components>

Ado.diconについては データベース接続のAdo.diconを参照して下さい。

DaoMetaDataFactoryImplはS2DaoInterceptorのコンストラクタの引数となるので記述しておきます。 DaoMetaDataFactoryImplはIDataSource, ICommandFactory, IDataReaderFactoryの3つの型がコンストラクタの引数となります。 IDataSourceの実装クラスはAdo.diconに定義されているものとします。ICommandFactoryの実装クラスはBasicCommandFactoryです。 IDataReaderFactoryの実装クラスはBasicDataReaderFactoryです。それぞれdiconファイルに定義しておきます。

SQLファイルのEncoding

SQLファイルのEncodingをDaoMetaDataFactoryImplのSqlFileEncodingプロパティで指定することができます。 デフォルトではSystem.Text.Encoding.Defaultで取得できるEncodingになっています。

SqlFileEncodingプロパティは文字列で指定します。指定できる文字列は Encodingクラスのリファレンス を参照して下さい。

以下はSQLファイルのEncodingにutf-8を指定するサンプルです。

S2Dao.dicon
<components namespace="S2Dao">
    <include path="Ado.dicon" />
    <component class="Seasar.Extension.ADO.Impl.BasicDataReaderFactory" />
    <component class="Seasar.Extension.ADO.Impl.BasicCommandFactory" />
    <component class="Seasar.Dao.Impl.DaoMetaDataFactoryImpl">
        <property name="SqlFileEncoding">"utf-8"</property>
    </component>
    <component name="Interceptor"
        class="Seasar.Dao.Interceptors.S2DaoInterceptor"/>
</components>