Spring XML tx: совет, эквивалентный @TransactionConfiguration? - PullRequest
4 голосов
/ 04 февраля 2012

Я использую конфигурацию транзакций на основе XML в Spring 3.0.5.Переход к аннотации на основе не вариант.Что эквивалентно @TransactionConfiguration (rollback = true) в конфигурации на основе XML?

В настоящее время я не применяю откат в моих JUnits, поэтому моя БД постоянно заполняется случайными тестовыми данными, которые должны бытьупал / очищено.Кроме того, у меня возникают конфликты PK между различными запусками тестов.

Мой applicationatonContext выглядит следующим образом:

...
<!-- 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>

...

Как мне указать, что я хочу, чтобы все мои JUnits откатывались по умолчанию?

Спасибо,

Эрик

1 Ответ

1 голос
/ 04 августа 2014

Добавьте в свой тестовый класс 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(){}
}

Я надеюсь, что дал вам ответы на все ваши вопросы.

...