inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)

작성글 저장 2 - 클래스 분리

PostCreate 기본 생성자 문제 질문

해결된 질문

768

박종훈

작성한 질문수 1

0

질문

PostController 에서 "/posts" 요청 시 PostCreate Dto Binding 관련 질문

Controller @RequestBody의 Dto는 기본생성자와 Getter or Setter 중 하나가 필요한 것으로 알고 있습니다.

[참고 링크]

하지만, 강사님의 코드를 보면,

PostCreate (Dto)에 기본생성자가 없음에도 테스트가 정상적으로 통과하는데 어떻게 그것이 가능한가요?

제가 따로 코드를 작성하여 시도한 경우, 기본 생성자가 없어서 실패하였습니다. (아래 코드 작성)

 

완전히 같은 질문

호돌맨님 답변 → 생성자가 존재하는 경우 생성자를 통해 값이 들어간다.

답변에 대한 질문 → 저는 생성자가 존재하더라도 기본생성자가 없으면, 오류가 발생합니다.. 왜 그런걸까요?

 


 

강사님 코드

@Setter
@Getter
@ToString
public class PostCreate {

    @NotBlank(message = "타이틀을 입력하세요.")
    private String title;

    @NotBlank(message = "콘텐츠를 입력해주세요.")
    private String content;

    @Builder
    public PostCreate(String title, String content) {
        this.title = title;
        this.content = content;
    }
}

 

질문자 코드 :: 실패 케이스


@Getter
@Setter
@ToString
public class CreatePostRequest {

    @NotBlank(message = "타이틀을 입력하세요")
    private String title;

    @NotBlank(message = "글 내용을 입력하세요")
    private String content;

    @Builder
    private CreatePostRequest(String title, String content) {
        this.title = title;
        this.content = content;
    }
}

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.http.converter.HttpMessageConversionException: Type definition error: [simple type, class com.example.blog.dto.request.CreatePostRequest]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of com.example.blog.dto.request.CreatePostRequest (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator) at [Source: (org.springframework.util.StreamUtils$NonClosingInputStream); line: 1, column: 2]

※ 컨트롤러에 진입도 못하고 오류 발생합니다.

질문자 코드 :: 성공 케이스


@Getter
@Setter
@ToString
@NoArgsConstructor
public class CreatePostRequest {

    @NotBlank(message = "타이틀을 입력하세요")
    private String title;

    @NotBlank(message = "글 내용을 입력하세요")
    private String content;

    @Builder
    private CreatePostRequest(String title, String content) {
        this.title = title;
        this.content = content;
    }
}

 

 

spring

답변 1

0

호돌맨

안녕하세요. 호돌맨입니다.
질문을 남겨주셔서 감사합니다.

어!? 뭐지 이상하네여?
근데 이거 저도 가끔씩 그러던데
원인을 잡아봐야겠습니다.
제꺼랑 비교해보게 git 소스점 올려주실 수 있나여?

0

박종훈

github link

https://github.com/jhp2014/project-blog

 


혹시 이렇게 올리는게 아니라면,

올리는 방법 간단하게 알려주시면 공부해서 그 방법으로 올리겠습니다. : )

 

1

호돌맨

코드 감사합니다.
pull 받아서 실행 했는데 정상적으로 수행됩니다.
(PostApiControllerTest의 postTest() 메서드로 테스트 했습니다.)

https://beaniejoy.tistory.com/76 요 링크를 한 번 읽어보시고
다시 한 번 시도 해보셔용. 그래도 잘 안되면


https://open.kakao.com/o/snQ6aljd 이쪽 오픈톡을 메세지 부탁드립니다.
zoom 화상채팅 을 통해 종훈님 컴터에 원격으로 접속하여 확인 해보겠습니다.
(혹시 연결이 필요하시면 zoom 설치 필수)

4

박종훈

답변 감사합니다! 링크 덕분에 좋은 공부가 되었습니다.

잘 해결되었고, 다른 분들 참고하실 수 있게 문제 원인을 남겨 놓겠습니다 :)

피드백 이후 다시 시도

  • jackson-module-parameter-names 확인 → 다시 시도 → 같은 에러가 발생

원인

  • 질문자 → Build설정 IntelliJ

  • 강사님 → Build설정 Gradle

  • jackson-module-parameter-names 이 IntelliJ로 Build 하는 경우 동작하지 않음

    링크 :: https://bjp5319.tistory.com/53

해결

  • build를 Gradle로 설정하니 jackson-module-parameter-names이 정상 작동 해서 기본 생성자 없이 @ResponseBody 동작하는 것을 확인했습니다!

build 시 에러 해결방법 공유(docker.desktop 업데이트 -> 의존성 버전 수정)

0

9

1

네이버 API | '검색 - 책' API 제공 중단

0

33

2

Part 2 듣기전 복습하던 중, 아키텍처에 관한 질문이 있습니다.

0

42

2

장치 의존성과 CSR

0

33

1

테스트는 인터페이스를 대상으로 만드는것에 대해 궁금한 점이 있습니다.

0

28

1

[영한님]Spring Boot 및 프로젝트 생성

0

51

2

JPA 엔티티로 만들었다고 기술종속이 아닌지에 대한 질문

0

54

3

강의 요청 문의

0

39

2

클로드코드 명령어-대화&세션관리 수업 자료

0

40

1

PlatformTransactionManager, ResourcelessTransactionManager 질문

1

65

2

자료 한번에 다운받기

0

33

1

스프링 빈 등록 방법 2가지 다 알아야하는 이유

0

58

1

mybatis 를 이용한 crud에서 insert에서 resultType='long" 이라고 하셨는데요,

0

27

1

설계 트레이드 오프 링크 접속 안됨

0

84

2

테스트 질문, 어떤것을 사용할것인것에 대해서

0

45

1

깃허브주소 궁금합니다.

0

36

2

mariaDB 설정

0

33

1

섹션4 퀴즈 오타있어요.

0

46

1

AWS 배포 성능테스트

0

74

2

퀴즈가 안열려요

0

74

2

7강 보고 있는데요.. 글자가 너무 작아요

0

41

1

트래잭션 전파 기본- 에 대한 개념 질문? 이렇게 생각해도 맞나요?

0

45

1

Editor에 관한 질문이 있습니다!

0

464

1

Entity 상속관계 매핑 설정 시 request , edit , response 클래스 분리

2

511

1