Spring Test @TransactionConfiguration
来源:原创 发布时间:2015-04-20 归档:spring-test
开发环境 :
JDK 7
Maven 3
Junit 4.11
Spring 4.1.5
MySQL 5.5
Eclipse Luna
继 Spring Test Transactional @Rollback 一文, 下面再介绍一种事务管理的方式。
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("/beans.xml")
@Transactional
@TransactionConfiguration
public class EmployeeDaoImplTest {
@Autowired
private EmployeeDao employeeDao;
@Test
public void testInsert() {
Employee employee = new Employee();
employee.setAge(20);
employee.setName("店小四");
employee.setMail("dianxiaosi@yeah.net");
boolean successful = employeeDao.insert(employee);
assertThat(successful, is(true));
}
}
@TransactionConfiguration 是 @TransactionConfiguration(defaultRollback = true) 的简写。@TransactionConfiguration 能够管理类范围内的事务, 与 @Rollback 一样, 它也需要 @Transactional 标注的支持, 否则事务不受 @TransactionConfiguration 的控制。
@TransactionConfiguration 可以与 @Rollback 注解共同工作, 如上面的测试用例, 事务虽然是受 @TransactionConfiguration 控制回滚不提交, 但如果你想提交某一个方法的事务, 你可以通过 @Rollback(false) 来控制提交事务。
执行测试, 数据库不会插入数据, 如果将 @TransactionConfiguration 改为 @TransactionConfiguration(defaultRollback = false), 则数据库插入一条记录。
@TransactionConfiguration 可以与 @Rollback 注解共同工作, 如上面的测试用例, 事务虽然是受 @TransactionConfiguration 控制回滚不提交, 但如果你想提交某一个方法的事务, 你可以通过 @Rollback(false) 来控制提交事务。
执行测试, 数据库不会插入数据, 如果将 @TransactionConfiguration 改为 @TransactionConfiguration(defaultRollback = false), 则数据库插入一条记录。
示例代码下载