springboot参数检验注解
时间: 2025-01-07 12:02:45 浏览: 8
### Spring Boot 参数校验注解及其使用方法
在Spring Boot应用程序中,为了确保接口接收到的参数满足预期格式和规则,可以利用一系列内置的校验注解。这些注解基于JSR303 Bean验证标准,并由Hibernate Validator具体实现[^3]。
#### 常见校验注解列表
| 注解 | 描述 |
| --- | --- |
| `@NotNull` | 验证对象不是null |
| `@Null` | 验证对象是null |
| `@AssertTrue` | 验证Boolean对象是否为true |
| `@AssertFalse` | 验证Boolean对象是否为false |
| `@Min(value)` | 验证数值型字段最小值(含边界)|
| `@Max(value)` | 验证数值型字段最大值(含边界)|
| `@DecimalMin(value)` | 验证字符串、BigDecimal、BigInteger类型的最小值(含边界),支持科学计数法表示形式 |
| `@DecimalMax(value)` | 验证字符串、BigDecimal、BigInteger类型的最大值(含边界),支持科学计数法表示形式 |
| `@Size(max,min)` | 字符串长度、集合大小、数组长度等范围约束 |
| `@Digits(integer,fraction)` | 数字精度控制,integer代表整数部分位数,fraction代表小数部分位数 |
| `@Past` | 验证日期是否在过去时间点之前 |
| `@Future` | 验证日期是否在未来时间点之后 |
| `@Pattern(regex,flag)` | 正则表达式匹配 |
除了上述基本注解外,还有专门针对电子邮件地址(`@Email`)以及字符长度(`@Length`)等特定场景设计的高级注解[^2]。
#### 示例代码展示
下面是一个简单的控制器类示例,展示了如何应用这些注解来进行参数校验:
```java
import javax.validation.constraints.*;
@RestController
@RequestMapping("/users")
public class UserController {
@PostMapping("/register")
public ResponseEntity<String> registerUser(@Valid @RequestBody User user){
return new ResponseEntity<>("注册成功", HttpStatus.CREATED);
}
}
class User {
@NotBlank(message="用户名不能为空")
private String username;
@Email(message="邮箱格式不正确")
@NotEmpty(message="邮箱不可为空")
private String email;
@Pattern(regexp = "^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{8,}$", message = "密码至少包含一个大写字母、一个小写字母、一个数字且不少于8位")
private String password;
// Getters and Setters...
}
```
当客户端发送POST请求到`/users/register`端点并提交不符合条件的数据时,服务器会返回HTTP状态码400 Bad Request,并附带详细的错误信息说明哪些字段未通过检验[^1]。
阅读全文