gpt4 book ai didi

java - 服务验证: throw an exception if validation failed

转载 作者:行者123 更新时间:2023-11-30 07:04:45 24 4
gpt4 key购买 nike

我需要你的帮助!

在我的 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。

因此,主要问题是:哪种方法是最佳实践以及为什么?

  1. 像我一样在验证期间抛出异常。
  2. 使用类似 notification pattern 的内容.
  3. 使用 Hibernate validator 。

最佳答案

显然,使用Hibernate Validator 进行 Bean 验证(这是现成的库)是最好的方法,因为我们不需要为最小长度/最大长度等重写大量代码。显式验证。

另外,如果你自己重写最小长度/最大长度验证的逻辑,你需要进行大量的测试以确保编写的代码是正确的,这是必须的。

经验法则,如果某些可信代码已经可用,请不要尝试再次重新发明/重写,而只是使用它,这称为DRY(不要重复自己)原则 ,在任何编程中都非常重要

关于java - 服务验证: throw an exception if validation failed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40333608/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com