事务与Transactional和TransactionalTestExecutionListener有什么区别?

时间:2013-10-23 09:22:17

标签: java spring transactions

在测试类上使用@Transactional注释启用事务与使用测试侦听器@TestExecutionListeners(TransactionalTestExecutionListener.class)启用事务之间是否有任何区别?

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("/applicationContext.xml")
@Transactional
public class MyTestClass {
....
}

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("/applicationContext.xml")
@TestExecutionListeners(TransactionalTestExecutionListener.class)
public class MyTestClass {
....
}

1 个答案:

答案 0 :(得分:1)

TransactionalTestExecutionListener是唯一创建交易的人。它检查@Transactional注释的存在,然后打开事务。如果指定测试执行侦听器,则spring使用一些默认的测试执行侦听器,其中一个是TransactionalTestExecutionListener,这就是为什么侦听器和注释似乎单独工作。