Spring Boot 3.x 导入 @NotBlank 注解方法
在SpringBoot3.x(基于JakartaEE9+)中,@NotBlank不再位于javax.validation包下,而应从jakarta.validation.constraints导入;仅添加spring-boot-starter-validation依赖是不够的,还需确保使用正确的包路径。

在 Spring Boot 3.x(基于 Jakarta EE 9+)中,`@NotBlank` 不再位于 `javax.validation` 包下,而应从 `jakarta.validation.constraints` 导入;仅添加 `spring-boot-starter-validation` 依赖是不够的,还需确保使用正确的包路径。
Spring Boot 自 3.0.0 版本起全面迁移到 Jakarta EE 9+ 规范,这意味着所有 Java EE 相关的验证注解(如 @NotBlank、@NotNull、@Size 等)已从旧的 javax.validation.* 包迁移至新的 jakarta.validation.* 包。这是 Jakarta EE 项目在 Oracle 将 Java EE 移交后统一命名空间的重要变更,并非 Bug,而是强制性规范升级。
✅ 正确做法(推荐适配 Spring Boot 3.x):
在你的实体类中,替换导入语句为:
import jakarta.validation.constraints.NotBlank;
并确保 pom.xml 中已声明 spring-boot-starter-validation(你已正确添加,无需改动):
org.springframework.boot spring-boot-starter-validation
? 注意:spring-boot-starter-validation 在 Spring Boot 3.x 中默认引入的是 jakarta.validation:jakarta.validation-api(而非旧版 javax.validation:validation-api),因此必须使用 jakarta.* 包路径,否则编译报错:Cannot resolve symbol NotBlank。
? 修改后的 Person 类示例:
package com.example.demo.model;
import com.fasterxml.jackson.annotation.JsonProperty;
import jakarta.validation.constraints.NotBlank; // ✅ 关键:使用 jakarta 而非 javax
import java.util.UUID;
public class Person {
private final UUID id;
@NotBlank(message = "Name must not be blank") // 可选:添加自定义提示
private final String name;
public Person(@JsonProperty("id") UUID id,
@JsonProperty("name") String name) {
this.id = id;
this.name = name;
}
public UUID getId() {
return id;
}
public String getName() {
return name;
}
}⚠️ 重要提醒:
- 若你误写为 import javax.validation.constraints.NotBlank;,即使依赖存在,IDE 和编译器仍会报错——因为该类在 Jakarta EE 9+ 中已彻底移除。
- Spring Boot 2.x(如 2.7.8)仍使用 javax.validation,但不建议降级以兼容旧包名,除非有强约束无法升级 JDK 或依赖;Spring Boot 3.x 要求 JDK 17+,且长期维护和新特性支持更优。
- 如需启用校验生效(例如在 REST Controller 中自动触发),需在对应方法参数上添加 @Valid:
@PostMapping("/persons")
public ResponseEntity> createPerson(@Valid @RequestBody Person person) {
// 处理逻辑
}✅ 总结:
| 项目 | Spring Boot 2.x | Spring Boot 3.x |
|------|------------------|------------------|
| Java 版本 | ≥ 8(推荐 11) | ≥ 17(强制) |
| 验证 API 包名 | javax.validation.* | jakarta.validation.* |
| Starter 依赖 | spring-boot-starter-validation(含 javax.validation-api) | spring-boot-starter-validation(含 jakarta.validation-api) |
| 推荐做法 | 保持 javax 导入 | 必须改用 jakarta 导入 |
遵循以上配置,即可在 Spring Boot 3.0.2 项目中成功使用 @NotBlank 进行 Bean 校验。
Shapr3D是一款面向工业设计、机械工程、建筑概念和三维打印工作流的CAD软件。Mac版采用Parasolid建模内核,支持草图约束、实体建模、工程图、可视化渲染及常见CAD格式交换,并可通过账户在多台设备之间同步项目。
REAPER是Cockos开发的数字音频工作站,提供多轨音频与MIDI录制、剪辑、处理、混音和母带制作工具。Mac版兼容Intel与Apple芯片,支持AU、VST、VST3、CLAP等插件格式,并提供高度可定制的工作流程。
Ableton Live 是面向音乐制作人与现场表演者的数字音频工作站,提供编曲视图、独具特色的现场视图、音频录制、MIDI创作、实时变速、乐器及效果器。Mac版原生支持Apple芯片,并可连接音频接口、MIDI控制器和第三方插件。
Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。
Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。














