【问题标题】:Spring4 Junit4 Test: @TransactionConfiguration VS @Transactional, use only one or together?Spring4 Junit4 测试:@TransactionConfiguration VS @Transactional,只用一个还是一起用?
【发布时间】:2015-04-15 03:12:53
【问题描述】:

在我的 junit 测试用例中:

  1. 我只在类或一个类中使用@transactional,每个测试方法都会回滚,因为每个方法都在运行一个事务。并且我在method上添加,然后分配的方法会回滚。

  2. 我在课堂上只使用@TransactionConfiguration(defaultRollback = true),但事务不起作用。

  3. 我在课堂上同时使用@transaction 和@TransactionConfiguration(defaultRollback = true),也会回滚。

我的问题:

  1. 为什么回滚在课堂上仅使用@TransactionConfiguration 不起作用?

  2. 我看到@transactional 默认 bean 名称是事务管理器并且回滚是 TRUE,所以我只在类中添加它而不是 @TransactionConfiguration?

  3. @transactional 必须注解,@TransactionConfiguration 是否只在 multi-transactionManager 的情况下分配事务管理器?

【问题讨论】:

    标签: spring transactions junit4


    【解决方案1】:
    1. @transactional 使每个方法在事务中运行,您可以通过@transactional 进行配置、隔离等。
    2. 您可以在多事务管理器中使用@TransactionManager 配置事务管理器。所以如果你只使用这个注解,事务是行不通的。
    3. 因为每个方法都在一个事务中运行,所以你可以用@RollBack(false)来改变它。

    【讨论】:

      【解决方案2】:

      https://docs.spring.io/spring/docs/4.3.x/javadoc-api/org/springframework/test/context/transaction/TransactionConfiguration.html 中,他们说@TransactionConfiguration 已“弃用”,并且“从Spring Framework 4.2 开始,在类级别使用@Rollback 或@Commit 并在@Transactional 中使用transactionManager 限定符”。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多