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); } }
看本教程。