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), 则数据库插入一条记录。

示例代码下载
SpringTestTransactionConfiguration.zip