2

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

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

我怎样才能做到这一点?

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

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

2) 该setter 采用aSqlMapClientTemplate而不是接口SqlMapClientTemplate实现( SqlMapClientOperations),因此看起来我需要子类SqlMapClientTemplate化而不是仅仅实现'SqlMapClientOperation' 接口。

对于特定的 Spring 配置,我如何全局替换SqlMapClientTemplate所有调用返回的 to getSqlMapClientTemplate()

谢谢。

4

2 回答 2

2

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

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

<bean id="specificDao" class="com.companyname.class" parent="baseDao" >
...
</bean>
于 2009-07-09T20:50:43.803 回答
0

这里的这个项目涉及一个类似的问题。我重写了我的 DAO 以将 SqlMapClientOperations 作为参数,这使得测试更容易和更直接,但您可以像提供的链接中一样使用 Mockito。

于 2010-08-30T13:57:22.863 回答