DataSourceTransactionManager и тест для активной транзакции - PullRequest
2 голосов
/ 16 января 2011

У меня есть простое приложение, которое использует org.springframework.jdbc.datasource.DataSourceTransactionManager для управления транзакциями.Моя весенняя конфигурация выглядит следующим образом:

<tx:annotation-driven/>
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource"/>
</bean>

Я пометил метод с помощью @Transactional и распечатал TransactionSynchronizationManager.isActualTransactionActive()

Но выходной результат равен false.Что я сделал не так?

Редактировать: я забыл сказать, что я проверяю это с SpringJUnit4ClassRunner.class.Я включил TransactionalTestExecutionListener.class, и это не будет работать.Теперь это сработало после того, как я расширил класс с помощью AbstractTransactionalJUnit4SpringContextTests

Ответы [ 3 ]

0 голосов
/ 07 июля 2011

Использовали ли вы необходимые аннотации в вашем тестовом классе?

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:/spring-....xml")
@TestExecutionListeners({TransactionalTestExecutionListener.class, DependencyInjectionTestExecutionListener.class})
@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = true)
@Transactional(readOnly = false)
public class MyTest {
 ...
}

Я не уверен, действительно ли нужны последние два, я хочу, чтобы в моих тестовых примерах была активная транзакция, поэтому они мне нужны. Первых трех должно быть достаточно для получения транзакционных прокси для ваших аннотированных bean-компонентов.

0 голосов
/ 25 июня 2013

У меня была такая же проблема, вы должны использовать это вместо:

<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="dataSource" ref="dataSource"/>
</bean>
0 голосов
/ 16 января 2011

Я думаю, что вы забыли добавить ниже в ваш файл cfg.это требуется, когда вы используете аннотации.Вы добавили это?

<tx:annotation-driven/>

Вот пространство имен

xmlns:tx="http://www.springframework.org/schema/tx"

 xsi:schemaLocation="http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
...