完全指南:5步掌握Citra 3DS模拟器的高效配置方法
2026/5/16 14:44:33
@NotBlank 专门用于String(字符串)类型的字段或参数。
它的校验逻辑非常严格,要求被注解的字符串必须同时满足以下三个条件:
不能为 null。
不能是空字符串 “”。
不能是纯空白字符(例如:" “、”\t"、“\n” 等,即去除首尾空格后长度必须大于 0)。
为了方便你记忆,我整理了一个对比表格。这是 @NotBlank 最容易混淆的三个注解:
| 注解 | 适用类型 | 校验严格度 | 能否通过纯空格" " |
|---|---|---|---|
| @NotNull | 所有对象 | 最宽松 | 能 (只检查 null) |
| @NotEmpty | 字符串、集合、数组 | 中等 | 能 (只检查长度/大小) |
| @NotBlank | 仅字符串 | 最严格 | 不能 (会 trim() 后检查) |
一句话总结区别:
@NotNull 只管“有没有”(不为 null)。
@NotEmpty 管“是不是空的”(长度/大小 > 0)。
@NotBlank 管“是不是真的有内容”(必须有非空格字符)。
假设我们有一个用户注册的场景:
publicclassUser{// 只要不为 null 就行,可以是 "" 或 " "@NotNullprivateStringfield1;// 不能为 null,且长度必须 > 0,所以 " " 是允许的@NotEmptyprivateStringfield2;// 不能为 null,不能是 "",且不能是 " " (纯空格会被视为无效)@NotBlankprivateStringusername;// getter and setter...}测试数据验证结果:
| 输入值 | @NotNull | @NotEmpty | @NotBlank |
|---|---|---|---|
null | ❌ 失败 | ❌ 失败 | ❌ 失败 |
""(空字符串) | ✅ 通过 | ❌ 失败 | ❌ 失败 |
" "(纯空格) | ✅ 通过 | ✅ 通过 | ❌ 失败 |
"abc"(正常内容) | ✅ 通过 | ✅ 通过 | ✅ 通过 |
在 Spring Boot 项目中,通常配合 @Valid 或 @Validated 使用。
引入依赖(通常 Spring Boot Starter 已包含):
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId></dependency>在实体类或 Controller 参数上使用:
@RestController@ValidatedpublicclassUserController{@PostMapping("/register")publicStringregister(@RequestBody@ValidUseruser){// 业务逻辑return"success";}}如果前端传入的 username 是 null、“” 或 " ",框架会自动拦截并抛出异常,不会进入业务逻辑。
使用 @NotBlank:用于业务必填且必须有意义的文本字段,如:用户名、密码、真实姓名、地址、备注等。防止用户“偷懒”只输入空格。
使用 @NotEmpty:用于集合(List/Set)判空,或者字符串只要求长度大于 0(允许空格)的特殊场景。
使用 @NotNull:用于 Long、Integer 等包装类,或者日期类型,或者你只关心对象是否存在而不关心内容的场景。