springboot @transactional 手动提交事务
时间: 2023-12-27 20:24:42 浏览: 137
springboot中事务管理@Transactional的注意事项与使用场景
5星 · 资源好评率100%
在Spring Boot中,可以使用`@Transactional`注解来实现手动提交事务。下面是一个示例代码:
```java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.support.DefaultTransactionDefinition;
@Service
public class TransactionalService {
@Autowired
private PlatformTransactionManager transactionManager;
@Transactional
public void insert() {
// 业务逻辑
// 手动提交事务
TransactionStatus status = transactionManager.getTransaction(new DefaultTransactionDefinition());
try {
// 业务逻辑
transactionManager.commit(status); // 手动提交事务
} catch (Exception e) {
transactionManager.rollback(status); // 手动回滚事务
}
}
}
```
在上面的示例中,我们首先通过`@Autowired`注解注入了`PlatformTransactionManager`,它是Spring框架提供的事务管理器。然后,在`insert()`方法中,我们使用`transactionManager.getTransaction(new DefaultTransactionDefinition())`来获取事务的状态,然后在`try`块中执行业务逻辑,最后通过`transactionManager.commit(status)`手动提交事务。如果在业务逻辑执行过程中发生异常,我们可以通过`transactionManager.rollback(status)`手动回滚事务。
需要注意的是,`@Transactional`注解应该放在调用`insert()`方法的方法上,以确保事务的生效。
阅读全文