Spring @Transactional无效

我正在尝试使用带注释的TX Spring支持。

应用上下文XML:

   ...      

实际代码:

 public class Repository { @Transactional public void save(Op op) { System.out.println("Transaction active:::: " + TransactionSynchronizationManager.isActualTransactionActive()); ... } } 

调用代码:

 @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = {"/integration-context.xml"}) public class RepositoryTest { @Autowired private Repository repository; @Test public void testRepositoryPersistence() { Op op = mock(Op.class); repository.save(op); } } 

它给了FALSE。

我究竟做错了什么?

您应该在配置中添加它

      

在RepositoryClass上添加一个接口

 public class Repository implements IRepository{ @Transactional public void save(Op op) { System.out.println("Transaction active:::: " + TransactionSynchronizationManager.isActualTransactionActive()); ... } } 

这在你的测试课上

 @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = {"classpath:/integration-context.xml"}) @TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = false) public class RepositoryTest extends AbstractTransactionalJUnit4SpringContextTests{ @Autowired private IRepository repository; @Test public void testRepositoryPersistence() { Op op = mock(Op.class); repository.save(op); } } 

看本教程。