DataSourceTransactionManager 并测试活动事务
我有一个简单的应用程序,使用 org.springframework.jdbc.datasource.DataSourceTransactionManager 来管理事务。 我的 spring 配置如下:
<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 扩展类后,它就可以工作了
I have a simple app that use org.springframework.jdbc.datasource.DataSourceTransactionManager
to manage the transactions.
My spring config is as follow:
<tx:annotation-driven/>
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
I have annotated the method with @Transactional
and print out the TransactionSynchronizationManager.isActualTransactionActive()
But the out put is false
. What have i done wrong ?
Edit: i forgot to say that i test that with SpringJUnit4ClassRunner.class
. I included the TransactionalTestExecutionListener.class
and this will not work. Now it worked after i extend the class with AbstractTransactionalJUnit4SpringContextTests
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我认为您忘记将以下内容添加到您的 cfg 文件中。当您使用注释时这是必需的。你添加了这个吗?
这是命名空间
I think you forgot to add the below to your cfg file. this is required when you are using annotations. Have you added this?
Here is the namespace
您是否在测试类上使用了所需的注释?
我不确定最后两个是否真的有必要,我希望我的测试用例有一个活跃的事务,这就是我需要它们的原因。前三个应该足以获得带注释的 Bean 的事务代理。
Did you use the required annotations on your test class?
I'm not sure whether the last two are really necessary, I want my test cases to have an active transaction that's why I need those. The first three should be enough in order to get transactional proxies for your annotated beans.
我遇到了同样的问题,你应该使用这个:
I had the same problem, you should use this instead: