声明式事务@TransactionTemplate 手动提交 手动回滚

时间:2025-04-10 07:05:22

使用 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() 方法。