问题代码:
@PutMapping("/{courseID}")
public ResponseEntity updateCourse(@PathVariable("courseID") long cid,
@RequestBody UpdateCourseDto updateCourseDto) {
......
@Data
@AllArgsConstructor
public class UpdateCourseDto {
private String name;
}
spring boot在尝试将request body反序列化成UpdateCourseDto时,会先用UpdateCourseDto的无参构造器创建一个实例,而UpdateCourseDto使用了@AllArgsConstructor注解后默认的构造器就没了,所以spring boot抛出了HttpMessageNotReadableException。
建议使用@AllArgsConstructor时一定也加上@NoArgsConstructor,因为大多数反序列化场景都会先尝试用无参构造器创建一个类实例。