問題代碼:
@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,因爲大多數反序列化場景都會先嚐試用無參構造器創建一個類實例。