DTO를 만들어서 api 요청, 응답을 처리하던 중 PUT메소드를 테스트하다가 400에러가 발생했다.
원인은 DTO로 사용하는 객체에 디폴트 생성자가 없어서 발생한 문제였다.
스프링부트를 사용한다고 해서 기본생성자가 꼭 필요한 것은 아니지만,
JPA 엔티티를 사용하면 리플렉션을 이용하기 때문에 기본생성자가 꼭 필요하다.
그리고 생성자가 없는 클래스는 클래스 파일을 컴파일하는 시점에 자바가 디폴트 생성자를 자동으로 생성해주지만, 임의로 작성한 생성자가 있을 경우, 자동으로 디폴트 생성자를 만들어주지 않는다.
나는 내 임의대로 생성자를 만들어뒀기때문에 기본 생성자가 생성되지 못했고
따라서 요청을 받아서 객체로 전환하는 JSON Serialize 과정에서 오류가 발생한 것 같다.
나는 대체 언제 이 의미없는 생성자를 왜 만들어뒀을까? ...미스테리다
이 요상한 생성자를 없애면 정상적으로 동작한다.
* 인프런 '실전 스프링부트와 JPA 2' 강의의 내용을 포함하고 있습니다!
'Spring & SpringBoot' 카테고리의 다른 글
SpringBoot&JPA : CommandAcceptanceException (0) | 2024.01.21 |
---|---|
실전 스프링부트와 JPA활용2 - 조회 API 성능 최적화, OSIV (0) | 2024.01.11 |
실전 스프링부트와 JPA활용1 - 변경 감지와 병합(merge) (1) | 2024.01.08 |
스프링 MVC 1편 (0) | 2023.03.29 |
좋은 객체지향 설계의 5원칙(SOLID)과 스프링 (0) | 2023.01.25 |