【问题标题】:DataSourceTransactionManager and test for active transactionDataSourceTransactionManager 并测试活动事务
【发布时间】:2011-06-10 01:20:38
【问题描述】:

我有一个简单的应用程序,它使用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扩展课程后工作了

【问题讨论】:

    标签: spring transactions spring-jdbc


    【解决方案1】:

    我认为您忘记将以下内容添加到您的 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">
    

    【讨论】:

      【解决方案2】:

      您是否在测试类中使用了所需的注释?

      @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 获取事务代理。

      【讨论】:

        【解决方案3】:

        我有同样的问题,你应该改用这个:

        <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
            <property name="dataSource" ref="dataSource"/>
        </bean>
        

        【讨论】:

          猜你喜欢
          • 2017-04-25
          • 1970-01-01
          • 2022-01-12
          • 2016-05-02
          • 1970-01-01
          • 1970-01-01
          • 2020-02-15
          • 2022-08-21
          • 1970-01-01
          相关资源
          最近更新 更多