[한줄스프링] HttpMessageConverter에 의해 동작하는 @RequestBody의 DTO 객체는 생성자가 필요할까?

hoyong.eom·2023년 11월 22일
0

스프링

목록 보기
62/64
post-thumbnail

오늘의 한줄 궁금증

Postman으로 아래의 RestController 테스트하는 과정에 오류가 발생했다.

@PostMapping("/api/post")
    public CreatePostResponseDto savePost(@RequestBody @Valid CreatePostRequestDto requestSavePost) {
    
        Post post = new Post(requestSavePost.getTitle(), requestSavePost.getContent());
        Long savePostId = postService.save(post);
        return new CreatePostResponseDto(savePostId, post.getTitle(), post.getContent());
    }

에러로그는 아래와 같다.

com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `com.example.board.dto.post.CreatePostRequestDto` (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator)

원인은... 기본 생성자가 존재하지 않기 때문이다.

정리
HttpMessageConverter에 의해서 동작하려면 기본 생성자와 Setter가 필요한듯 보인다.

0개의 댓글