我有许多扩展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()
吗?
感谢。
答案 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。