@RequestBody 注解导包错误,对象属性全是null,被硬控1小时

问题很简单,使用Swagger文档开发调试Spring Boot项目的时候,发现形如下面的代码,@RequestBody UserDTO userDTOuserDTO对象的所有字段属性都是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;