Jakarta Bean Validation (jakarta.validation.constraints) 常用注解

Jakarta Bean Validation (jakarta.validation.constraints) 标准的注解

Jakarta Bean Validation (jakarta.validation.constraints) 提供了一系列标准的注解,用于简化和标准化JavaBean的数据验证。以下是一些常用的API注解及其用途简介:

  1. @NotNull: 用于确保字段不为null。适用于任何类型。
  2. @NotEmpty: 用于String、Collection、Map等容器类型,确保它们不为空(即它们不为null且长度/大小大于0)。
  3. @NotBlank: 类似于@NotEmpty,但仅适用于String类型,确保字符串不仅不为空而且不只包含空白字符。
  4. @Min 和 @Max: 分别用于限制数值类型的最小值和最大值。例如,@Min(18)表示年龄不能小于18。
  5. @Size: 限制元素的数量,用于String、Collection、Map或数组。例如,@Size(min=2, max=50)限制字符串长度在2到50之间。
  6. @Pattern: 利用正则表达式进行字符串的格式检查,如电子邮件、电话号码格式等。
  7. @Email: 特定于电子邮件地址的格式验证,是@Pattern的一个特例,但在某些实现中可能提供更具体的错误消息。
  8. @Positive, @Negative, @PositiveOrZero, @NegativeOrZero: 限制数字为正数、负数或非负数、非正数。
  9. @Future, @Past: 分别用于日期和时间类型,确保日期在未来或过去。
  10. @AssertTrue, @AssertFalse: 用于布尔类型的字段或getter方法,确保其值为true或false。
  11. @DecimalMin, @DecimalMax: 对BigDecimal和BigInteger类型的字段进行最小值和最大值的限制,支持包含比较符号(如@DecimalMin(value=“1.0”, inclusive=false)表示大于1.0)。
  12. @Null: 标记字段必须为null。
  13. @Valid: 递归地对关联的对象进行验证,通常用于集合或对象类型的字段,以确保嵌套的bean也经过验证。
  14. @CreditCardNumber: 验证信用卡号的格式。
  15. @Digits: 用于整数和浮点数,确保数值的整数部分和小数部分不超过指定的位数。
    这些注解可以组合使用,为JavaBean提供强大的数据验证功能。此外,你还可以自定义约束注解来满足特定需求,通过实现ConstraintValidator接口来定义约束的验证逻辑
是的,`jakarta.validation.constraints`包中的约束注解已经被Spring框架集成了。Spring框架通过其验证和数据绑定机制支持JSR-380(Bean Validation 2.0),这使得开发者可以在Spring应用程序中使用这些注解来进行数据验证。 以下是一些常见的用法: 1. **在实体类中使用约束注解**: ```java import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.Size; public class User { @NotNull(message = "Name cannot be null") @Size(min = 2, max = 30, message = "Name must be between 2 and 30 characters") private String name; // getters and setters } ``` 2. **在控制器中使用验证**: ```java import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("/users") public class UserController { @PostMapping public ResponseEntity<String> createUser(@Validated @RequestBody User user) { // 处理用户创建逻辑 return new ResponseEntity<>("User created successfully", HttpStatus.CREATED); } } ``` 3. **全局异常处理**: ```java import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.MethodArgumentNotValidException; import org.springframework.web.bind.annotation.*; @ControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(MethodArgumentNotValidException.class) public ResponseEntity<String> handleValidationExceptions(MethodArgumentNotValidException ex) { // 处理验证异常 return new ResponseEntity<>(ex.getMessage(), HttpStatus.BAD_REQUEST); } } ``` 通过这种方式,Spring框架能够自动处理验证逻辑,并在数据不符合约束条件时返回适当的错误响应。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值