使用 TransactionTemplate 或编程式事务管理来手动提交事务之外,还可以使用注解 @Transactional 来控制事务的提交和回滚。
如何在 Spring Boot 中使用 @Transactional 注解来手动提交事务:
@Service
public class MyService {
@Autowired
private MyRepository myRepository;
@Transactional
public void myMethod() {
// 业务逻辑代码
myRepository.updateSomething();
// 手动提交事务
TransactionAspectSupport.currentTransactionStatus().flush();
}
}
在上面的例子中,myMethod() 方法被标记为 @Transactional 注解,因此它将会在方法执行前开启一个事务,在方法执行后提交或回滚该事务,具体取决于方法是否抛出了异常。在方法中,可以执行业务逻辑代码,并在代码执行完毕后手动提交事务。
要手动提交事务,可以使用 ().flush() 方法。这个方法将会强制提交当前事务。如果要回滚事务,则可以使用 ().setRollbackOnly() 方法。