1 在 Java 中进行手动校验 DTO 的方法有很多种,这里提供一种常用的校验方法,使用 Hibernate Validator 实现: 2 3 1. 添加依赖 4 5 首先需要在 Maven 或 Gradle 中添加 Hibernate Validator 的依赖: 6 7 Maven: 8 9 ```xml 10 <dependency> 11 <groupId>org.hibernate.validator</groupId> 12 <artifactId>hibernate-validator</artifactId> 13 <version>6.2.0.Final</version> 14 </dependency> 15 ``` 16 17 Gradle: 18 19 ```groovy 20 implementation 'org.hibernate.validator:hibernate-validator:6.2.0.Final' 21 ``` 22 23 2. 创建 DTO 类 24 25 假设我们有一个 UserDTO 类需要校验,此类中包含了一些必填字段和某些属性的长度范围限制。 26 27 ```java 28 public class UserDTO { 29 @NotBlank(message = "用户名不能为空") 30 private String username; 31 32 @NotBlank(message = "密码不能为空") 33 @Size(min = 6, max = 20, message = "密码长度必须在 {min} 到 {max} 之间") 34 private String password; 35 36 @Email(message = "邮箱格式不正确") 37 private String email; 38 39 // getters and setters 40 } 41 ``` 42 43 在类中使用注解来标记要校验的字段,并为每个注解设置校验规则。例如: 44 45 - `@NotBlank` 注解用来校验字符串不能为空格或空字符串。 46 - `@Size` 注解用来校验字符串、数组、集合或 Map 的大小是否在指定范围内。 47 - `@Email` 注解用来校验字符串是否符合电子邮件格式。 48 49 3. 编写校验逻辑 50 51 使用 Hibernate Validator 的 `Validator` 接口进行 DTO 的校验: 52 53 ```java 54 import javax.validation.Validation; 55 import javax.validation.Validator; 56 import javax.validation.ValidatorFactory; 57 import java.util.Set; 58 59 public class UserValidator { 60 private static Validator validator; 61 62 static { 63 ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); 64 validator = factory.getValidator(); 65 } 66 67 public static boolean validate(UserDTO userDTO) { 68 Set<ConstraintViolation<UserDTO>> violations = validator.validate(userDTO); 69 if (violations.size() > 0) { 70 for (ConstraintViolation<UserDTO> violation : violations) { 71 System.out.println(violation.getMessage()); 72 } 73 return false; 74 } 75 return true; 76 } 77 } 78 ``` 79 80 在此示例中,我们创建了一个名为 `UserValidator` 的类,其中包含了一个 `validate` 方法用于执行校验。 81 82 `ValidatorFactory` 和 `Validator` 的初始化应该在静态代码块中完成,这样所有的校验操作都会共享一个实例,以提高效率。 83 84 `validate` 方法中,我们调用 `validator.validate` 方法来校验传入的 `UserDTO` 对象。如果校验失败,我们将依次输出每个不合法字段对应的错误信息,并返回 false,表示 DTO 校验失败。否则,返回 true,表示 DTO 校验通过。 85 86 4. 使用校验逻辑 87 88 我们可以在需要校验的地方调用上述校验逻辑,例如: 89 90 ```java 91 public static void main(String[] args) { 92 UserDTO userDTO = new UserDTO(); 93 userDTO.setUsername(""); 94 userDTO.setPassword("1234"); 95 userDTO.setEmail("invalid-email"); 96 97 boolean valid = UserValidator.validate(userDTO); 98 if (!valid) { 99 System.out.println("DTO validation failed"); 100 } 101 } 102 ``` 103 104 在此示例中,我们创建了一个 UserDTO 对象,并设置其中的一些不合法属性。然后调用 `UserValidator.validate` 方法进行校验,如果返回 false,则说明 DTO 校验失败。View Code
标签:UserDTO,java,dto,校验,validator,Validator,DTO,userDTO From: https://www.cnblogs.com/lljboke/p/17375175.html