春季:更换的SqlMapClientTemplate对所有客户端?(Spring: replace

2019-10-16 21:16发布

我有一个数字,延长SqlMapClientDaoSupport DAO类,并调用getSqlMapClientTemplate()来运行iBatis的查询。

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

我怎样才能做到这一点?

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

1)我想更换自己是“全球”我的Spring配置; 我不希望有打电话给每个DAO设置。

2)这二传手需要SqlMapClientTemplate ,而不是接口SqlMapClientTemplate器械( SqlMapClientOperations ),所以看起来好像我需要继承SqlMapClientTemplate而不是只让我自己实现的“SqlMapClientOperation的接口。

怎么样,对于特定的Spring配置,我可以在全球更换SqlMapClientTemplate所有的调用返回getSqlMapClientTemplate()

谢谢。

Answer 1:

无论是使用某种类型的AOP或都在上下文中的bean定义扩展的抽象定义:

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

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


Answer 2:

这里本项越过了类似的问题。 我改写了我的DAO采取SqlMapClientOperations作为参数,这使得更加简单和直接的测试,但你可以在所提供的链接中使用类似的Mockito。



文章来源: Spring: replace SqlMapClientTemplate for all clients?