问题很简单,使用Swagger文档开发调试Spring Boot项目的时候,发现形如下面的代码,@RequestBody UserDTO userDTO
,userDTO
对象的所有字段属性都是null
@PostMapping("/create")
public BaseResponse<Long> create(@Valid @RequestBody UserDTO userDTO)
chatgpt+网上查教程排查了许久,包括在DTO的字段添加@NotBlank,检查@NoArgsConstructor、@Data,字段名命名规范,swagger前端传递的是合法JSON,驼峰字段名一致,请求头是application/json等等等等,全部都没有问题,还重启了一次电脑,也依然无效
最后发现是IDEA导包时不小心点错了导入的类,原来我导入的不是org.springframework.web.bind.annotation.RequestBody
,而是io.swagger.v3.oas.annotations.parameters.RequestBody
,wtf?!同名的注解害死人啊,检查代码的时候忽视了文件最上方一大片的import,导致这种低级错误很难被注意到
//import io.swagger.v3.oas.annotations.parameters.RequestBody; // 不小心点错导入,删掉
import org.springframework.web.bind.annotation.RequestBody;