Spring Boot项目中@NotNull注解导致构建失败的解决方法
解决Spring Boot实体类@NotNull注解导致无参构造实例化失败的问题
核心原因:大概率是你用了Lombok的
@RequiredArgsConstructor注解(或者手动编写了带参构造),当字段添加@NotNull(属于NonNull类注解)后,@RequiredArgsConstructor会自动生成包含这些非空字段的带参构造器,此时Java默认的无参构造器会被覆盖,导致你用无参构造实例化时出现参数不匹配错误。解决办法:
- 显式添加无参构造:
- 如果用Lombok,直接在实体类上加上
@NoArgsConstructor注解,自动生成无参构造器,同时保留@NotNull的校验功能。 - 也可以手动编写无参构造方法:
public Category() { // 空实现即可 }
- 如果用Lombok,直接在实体类上加上
- 无需声明包含所有@NotNull字段的构造器:字段校验是靠
@NotNull配合Spring Validation框架(比如在接口参数上加@Valid触发校验)生效的,和构造器是否包含这些字段完全无关。构造器仅用于实例化对象,只要能正常创建对象,校验逻辑就能正常运行。
- 显式添加无参构造:
内容的提问来源于stack exchange,提问作者plbit
相关产品推荐
相关产品推荐

