【发布时间】:2017-03-13 00:43:29
【问题描述】:
我需要你的帮助!
在我的 Web 项目(它基于 Spring MVC)中,我使用异常来指示某些验证失败,但我不确定这样做是否正确。
例如我有这样的服务:
@Service
@Transactional
public class UserService {
@Autowired
private UserRepository userRepository;
public User createUser(UserDTO userDTO) throws IllegalArgumentExceptio {
validateUserEmail(userDTO);
return userRepository.save(new User(userDTO.getFirstName(), userDTO.getLastName(), userDTO.getEmail(), userDTO.getPassword()));
}
private void validateUserEmail(UserDTO userDTO) throws IllegalArgumentException {
String emailPattern = "^[a-z0-9-\\+]+(\\.[a-z0-9-]+)*@"
+ "[a-z0-9-]+(\\.[a-z0-9]+)*(\\.[a-z]{2,})$";
if (userDTO() == null) {
throw new IllegalArgumentException(INVALID_EMAIL_NULL.getMessage());
} else if (userDTO().length() > 25) {
throw new IllegalArgumentException(INVALID_EMAIL_LENGTH.getMessage());
} else if (!userDTO().matches(emailPattern)) {
throw new IllegalArgumentException(INVALID_EMAIL_FORMAT.getMessage());
}
}
}
我读过这一篇article。我也知道还有另一种方法是使用 Hibernate Validator。
所以,主要问题是:哪一种方法是最佳实践,为什么?
- 和我一样在验证过程中抛出异常。
- 使用notification pattern之类的东西。
- 使用休眠验证器。
【问题讨论】:
-
我的回答有帮助吗?
-
@javaguy 是的,它帮助了我。谢谢
标签: java spring hibernate validation exception