如果你不想使用自动提交,你必须PlatformTransactionManager
在你的 Spring 配置中设置一个。对于简单的 JDBC 用法,您可以使用DataSourceTransationManager
.
在 Web 应用程序中,通常@Transactional
在服务层使用注解。在一个简单的应用程序中,Spring 提出了TransactionTemplate
. 这是 Spring 参考手册 3.2 中的一个示例
public class SimpleService implements Service {
// single TransactionTemplate shared amongst all methods in this instance
private final TransactionTemplate transactionTemplate;
// use constructor-injection to supply the PlatformTransactionManager
public SimpleService(PlatformTransactionManager transactionManager) {
Assert.notNull(transactionManager, "The 'transactionManager' argument must not be null.");
this.transactionTemplate = new TransactionTemplate(transactionManager);
}
public Object someServiceMethod() {
return transactionTemplate.execute(new TransactionCallback() {
// the code in this method executes in a transactional context
public Object doInTransaction(TransactionStatus status) {
updateOperation1();
return resultOfUpdateOperation2();
}
});
}
}
updateOperation
是必须在事务上下文中调用的方法。