[Seasar-user:10305] Re: [S2Dao] 複数データソース接続時に特定ConnectionをDIする方法
Toshihiro Nakamura
[E-MAIL ADDRESS DELETED]
2007年 9月 4日 (火) 21:39:01 JST
中村(taedium)です。
> 現在、S2DaoのFAQを参考にして複数データソースに接続しています。
> http://www.seasar.org/wiki/index.php?FAQ%2FS2DAO#w7da6e0e
>
> コンテナから特定のデータソースへのConnectionを受け取りたいのですが、
> どのようにすれば実現可能でしょうか?
SeasarのAPIですがBindingアノテーションを使うのが
一番楽かなぁと思います。
FAQの例をベースにするとたとえばこんな感じです。
package hogehoge.dao.dao2.impl;
public abstract class EmpDaoImpl implements EmpDao {
private DataSource dataSource;
@Binding("jdbc2.dataSource")
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
}
public Emp selectById(Integer id) {
Connection conn = dataSource.getConnection();
//・・・
}
}
リンク先のcustomizer.diconの定義は少し変更する必要があります。
<component name="dao2SupportAspectCustomizer" class="org.seasar.framework.container.customizer.AspectCustomizer">
<property name="interceptorName">"dao2.interceptor"</property>
<initMethod name="addClassPattern">
<arg>"hogehoge.dao.dao2"</arg>
<arg>".*Dao(Impl)?"</arg>
</initMethod>
</component>
> 例えばFAQのサンプルでいくと、jdbc1とjdbc2というデータソースがあって、
> jdbc1へのConnectionを参照したいのです。
あっ、jdbc2のConnectionをとる例になっちゃいました。
適当に読み替えてください。
--
Toshihiro Nakamura
Seasar-user メーリングリストの案内