校验注解 [Spring Boot]

Marimo_z
2025-04-26 / 0 评论 / 11 阅读 / 正在检测是否收录...

1. 空值检查

注解作用示例
@NotNull字段不能为 null@NotNull String name;
@Null字段必须为 null@Null String unusedField;
@NotEmpty字符串/集合/数组不能为空(长度/大小 > 0)@NotEmpty List<String> list;
@NotBlank字符串不能为空且必须包含非空白字符@NotBlank String username;

2. 长度/大小检查

注解作用属性示例
@Size字符串/集合/数组的长度或大小在指定范围内min, max@Size(min=2, max=10) String password;
@LengthHibernate 扩展,字符串长度范围min, max@Length(min=5, max=20) String code;

3. 数值范围检查

注解作用属性示例
@Min数值必须 >= 指定值value@Min(18) int age;
@Max数值必须 <= 指定值value@Max(100) int score;
@DecimalMin数值 >= 指定值(字符串形式的大数)value, inclusive@DecimalMin("0.01") BigDecimal price;
@DecimalMax数值 <= 指定值(字符串形式的大数)value, inclusive@DecimalMax("100.0") BigDecimal discount;
@Positive数值必须为正数(>0)-@Positive int quantity;
@PositiveOrZero数值 >= 0-@PositiveOrZero int offset;
@Negative数值必须为负数(<0)-@Negative BigDecimal loss;
@NegativeOrZero数值 <= 0-@NegativeOrZero int balance;

4. 日期检查

注解作用示例
@Past日期必须是过去时间@Past LocalDate birthDate;
@PastOrPresent日期是过去或当前时间@PastOrPresent LocalDateTime timestamp;
@Future日期必须是将来时间@Future LocalDate expireDate;
@FutureOrPresent日期是将来或当前时间@FutureOrPresent LocalDateTime eventTime;

5. 正则匹配

注解作用示例
@Pattern字符串必须匹配正则表达式@Pattern(regexp="^[A-Za-z0-9]+$") String id;
@Email字符串必须是邮箱格式(Hibernate 扩展)@Email String email;

6. 布尔值检查

注解作用示例
@AssertTrue字段必须为 true@AssertTrue boolean isAgreed;
@AssertFalse字段必须为 false@AssertFalse boolean isExpired;

7. 自定义校验

注解作用示例
@CustomAnnotation自定义校验逻辑(需实现 ConstraintValidator需结合 @Constraint 定义,例如:
@Constraint(validatedBy = MyValidator.class)

8. 其他校验

注解作用示例
@Valid级联校验(校验对象内的字段)@Valid @RequestBody User user;
@CreditCardNumberHibernate 扩展,校验信用卡号格式@CreditCardNumber String cardNumber;
@URLHibernate 扩展,校验 URL 格式@URL String website;

使用示例

  1. 在实体类中添加注解

    public class User {
        @NotBlank(message = "用户名不能为空")
        private String username;
    
        @Email(message = "邮箱格式错误")
        private String email;
    
        @Size(min = 6, max = 16, message = "密码长度需在6-16位之间")
        private String password;
    }
  2. 在 Controller 中触发校验

    @PostMapping("/user")
    public ResponseEntity<?> createUser(@Valid @RequestBody User user, BindingResult result) {
        if (result.hasErrors()) {
            // 处理校验错误
        }
        // 业务逻辑
    }

依赖配置

pom.xml 中添加 Hibernate Validator 依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

注意事项

  • 校验注解需要结合 @Valid@Validated 触发。
  • 自定义错误消息可通过 message 属性指定,支持国际化。
  • Hibernate Validator 是 Bean Validation 的默认实现,支持更多扩展注解。
1

评论 (0)

取消