私はSqlMapClientDaoSupportを拡張するいくつかのDAOクラスを持ち、iBatisクエリを実行するにはgetSqlMapClientTemplate()
を呼び出します。Spring:すべてのクライアントでSqlMapClientTemplateを置き換えますか?
特定のテストでは、各DAOがgetSqlMapClientTemplate()
を呼び出すときに返されるオブジェクトを、自分のカスタムクラスで置き換えたいと考えています。
どうすればいいですか?
setSqlMapClientTemplate(org.springframework.orm.ibatis.SqlMapClientTemplate)
があります。これには2つの問題があります。
1)Springの設定で置き換えがグローバルになることを望みます。私は各DAOでsetを呼び出す必要はありません。それは私が単に「SqlMapClientOperationのインターフェイスの私の独自の実装を作るのではなく、SqlMapClientTemplate
をサブクラス化する必要があるかのように見えるよう
2)それセッターは、インターフェースSqlMapClientTemplate
実装(SqlMapClientOperations
)ではなくSqlMapClientTemplate
をとります。
特定のSpring設定では、すべての呼び出しから返されたSqlMapClientTemplate
をグローバルにgetSqlMapClientTemplate()
に置き換えることはできますか?
ありがとうございました。
<bean id="baseDao" abstract="true">
<property name="sqlMapClientTemplate" ref="yourNewClientTemplate"/>
</bean>
<bean id="specificDao" class="com.companyname.class" parent="baseDao" >
...
</bean>
私は抽象的な定義のアプローチが最良だと思います。私はこの例ではAOPのアプローチがうまくいくかどうかはわかりません。拡張されたオブジェクトが別のオブジェクトに注入され、内部の 'this'メソッド呼び出しのために注入されない場合にのみ機能します。余分な仕事がなければそれはありません。 – laz