需要在Transactional注解指定rollbackFor或者在方法中使用rollback (line: 133)
时间: 2024-05-04 08:19:05 浏览: 120
test-transactional:关于spring中@Transactional注解传播属性原理的实验
5星 · 资源好评率100%
是的,当使用`@Transactional`注解声明事务时,通常需要指定`rollbackFor`属性或在方法中使用`rollback`语句来指定在出现异常时需要回滚的异常类型。以下是一个示例:
```java
@Service
@Transactional(rollbackFor = Exception.class)
public class UserServiceImpl implements UserService {
@Autowired
private UserRepository userRepository;
@Override
public void createUser(User user) throws Exception {
try {
userRepository.save(user);
} catch (Exception e) {
throw new Exception("Failed to create user");
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public void updateUser(User user) throws Exception {
try {
userRepository.save(user);
} catch (Exception e) {
throw new Exception("Failed to update user");
}
}
}
```
在上面的示例中,`@Transactional`注解用于声明两个方法都需要使用事务,并且在出现任何异常时都需要回滚事务。`createUser`方法中,当保存用户时出现异常时,我们会手动抛出一个新的异常,这时事务将自动回滚。而在`updateUser`方法中,我们在方法级别上再次使用了`@Transactional`注解,并在其中指定了需要回滚的异常类型。这样,当更新用户时出现指定的异常类型时,事务将回滚。
阅读全文