Spring XML tx:相当于@TransactionConfiguration的建议?

时间:2012-02-03 21:09:52

标签: java spring transactions rollback spring-aop

我在Spring 3.0.5中使用基于XML的事务配置。移动到基于注释不是一种选择。基于XML的配置中@TransactionConfiguration(rollback = true)的等价物是什么?

目前,我没有在我的JUnit中强制执行回滚,因此我的数据库始终充满了必须删除/清除的随机测试数据。另外,我最终在不同的测试运行之间发生PK冲突。

我的applicatonContext内容如下:

...
<!-- Wrap all DAO Implementations in a transaction -->
<aop:config proxy-target-class="false">
    <aop:pointcut id="daoOperation" expression="execution(* com.calculator.dao.impl.*Impl.* (..))" />
    <aop:advisor pointcut-ref="daoOperation" advice-ref="txAdvice" />
</aop:config>

<tx:advice id="txAdvice">
    <tx:attributes>
        <tx:method name="*" read-only="true" propagation="REQUIRED"/>
        <tx:method name="execute*" propagation="REQUIRED"/>
        <tx:method name="query*" propagation="REQUIRED"/>
        <tx:method name="insert" propagation="REQUIRED"/>
        <tx:method name="delete" propagation="REQUIRED"/>
    </tx:attributes>
</tx:advice>

<bean class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
    <property name="url" value="${datasource.url}" />
    <property name="username" value="${datasource.user}" />
    <property name="password" value="${datasource.password}" />
    <property name="defaultAutoCommit" value="false" />
</bean>

...

如何指定我希望所有JUnit默认回滚?

谢谢,

埃里克

1 个答案:

答案 0 :(得分:1)

将此配置放在JUnit测试类上。

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "/pathTo/spring/context/applicationContext.xml")
@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = true)
@Transactional
public class LocationDaoTest extends AbstractTransactionalJUnit4SpringContextTests{

  @Test
  public void testDAOsCRUD(){}
}

我希望我已经向你提供了有关你问题的所有答案。