要改进Java自定义验证表的代码,使其更加清晰易读,可以考虑以下几点:
以下是一个简单示例代码:
public class User {
@NotBlank(message = "用户名不能为空")
private String username;
@NotBlank(message = "密码不能为空")
@Size(min = 6, max = 16, message = "密码长度必须在6-16位之间")
private String password;
// getter and setter
}
public class ValidationUtils {
public static void validate(Object obj) {
Set<ConstraintViolation<Object>> violations = Validation.buildDefaultValidatorFactory()
.getValidator().validate(obj);
if (!violations.isEmpty()) {
StringBuilder sb = new StringBuilder();
for (ConstraintViolation<Object> violation : violations) {
sb.append(violation.getMessage()).append("; ");
}
throw new ValidationException(sb.toString());
}
}
}
public class Main {
public static void main(String[] args) {
User user = new User();
user.setUsername("john");
user.setPassword("");
try {
ValidationUtils.validate(user);
System.out.println("验证通过");
} catch (ValidationException e) {
System.out.println("验证失败:" + e.getMessage());
}
}
}
在这个示例代码中,User类定义了两个字段并使用了注解来标识验证规则。ValidationUtils类封装了验证逻辑,并通过反射机制动态获取字段和注解进行验证。在Main类中,创建了一个User对象,并通过ValidationUtils类进行验证。如果验证不通过,会抛出ValidationException异常,并输出错误信息。
推荐腾讯云的Serverless 云函数 SCF(Serverless Cloud Function),它是一种无服务器架构,可以实现按需分配资源、弹性扩展、按调用次数计费等特点。您可以通过使用Serverless 云函数 SCF来构建验证服务,将验证逻辑独立出来,并通过云函数的方式进行调用,实现高并发和高可用。详情请参考腾讯云函数 SCF的官方文档:腾讯云函数 SCF。
领取专属 10元无门槛券
手把手带您无忧上云