Spring:替换所有客户端的SqlMapClientTemplate?

时间:2009-07-09 20:16:03

标签: java spring ibatis

我有许多扩展SqlMapClientDaoSupport的DAO类,并调用getSqlMapClientTemplate()来运行iBatis查询。

对于特定的测试,我希望用我自己的自定义类替换每个DAO调用getSqlMapClientTemplate()时返回的对象。

我该怎么做?

我知道有setSqlMapClientTemplate( org.springframework.orm.ibatis.SqlMapClientTemplate );然而,这提出了两个问题。

1)我希望替换为我的Spring配置的“全局”;我不想在每个DAO上调用set。

2)该setter采用SqlMapClientTemplate而不是接口SqlMapClientTemplate实现(SqlMapClientOperations),因此看起来好像我需要继承SqlMapClientTemplate而不仅仅是制作我自己实现的'SqlMapClientOperation接口。

对于特定的Spring配置,我可以全局替换从SqlMapClientTemplate的所有调用返回的getSqlMapClientTemplate()吗?

感谢。

2 个答案:

答案 0 :(得分:2)

要么使用某种AOP,要么在上下文中使用所有bean定义扩展抽象定义:

<bean id="baseDao" abstract="true">
    <property name="sqlMapClientTemplate" ref="yourNewClientTemplate"/>
</bean>

<bean id="specificDao" class="com.companyname.class" parent="baseDao" >
...
</bean>

答案 1 :(得分:0)

This item here提出了类似的问题。我重写了我的DAO以将SqlMapClientOperations作为参数,这样可以更简单,更直接地进行测试,但您可以在提供的链接中使用Mockito。