@Transactional 是 Spring 框架中用于声明式事务管理的一个注解。当一个方法被这个注解标记时,该方法将在一个事务的上下文中执行。如果在执行该方法时抛出了指定类型的异常(在这个例子中是 Exception.class),那么事务将被回滚,即之前进行的所有数据库操作都将被撤销。
import org.springframework.transaction.annotation.Transactional;
@Service
public class MyService {
@Autowired
private MyRepository repository;
@Transactional(rollbackFor = Exception.class)
public void doSomething() {
try {
// ... 执行一些数据库操作
repository.save(someEntity);
// 如果这里抛出异常,事务将被回滚
throw new CustomException("Something went wrong");
} catch (Exception e) {
// 处理异常
}
}
}