inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

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

PostCreate 기본 생성자 문제 질문

해결된 질문

711

박종훈

작성한 질문수 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 동작하는 것을 확인했습니다!

setter 사용하지 않기

0

14

1

세션을 제대로 이해한게 맞는지 궁금합니다

0

11

0

jsp의 상대경로와 Controller에서 반환하는 이름이 달라도 괜찮나요?

0

12

1

안녕하세요 토비님 혹시 완성된 코드의 repository 주소는 없을까요?

0

23

1

자막 오타 제보

0

29

1

운영환경에 적용해볼 수 없을때...고민입니다 ㅠㅠ

0

31

1

빈 스코프 개념의 중요성

0

26

1

트랙잭션 격리수준 선택에 대해서 질문

0

25

1

안녕하세요 치킨 디도스 이벤트 보고 흉내내보려 들어왔습니다..

0

29

2

실무 내용 문의드려요

0

30

2

SingletonService가 JVM이 뜰 때 생성되는게 맞나요?

0

71

2

임포트 오류

0

40

2

답을언제쯤받아볼수있나요

0

68

2

형 책 어떻게 받아?

1

66

1

@JsonIgnore 이후 Internal Server Error가 발생하지 않습니다.

0

35

2

mvc 패턴 - 적용 강의에서 회원가입할 때 redirect가 아닌 forward인 이유가 궁금합니다.

0

32

1

프로젝트가 없어요..

0

78

2

JpaCursorItemReader의 정렬 조건 부재의 영향

1

50

2

changeTeam 메서드 질문

0

36

1

"컴파일 시점에 없는 값을 어떻게 참조할 것인가?" 섹션

1

56

2

테스트 관련 질문!

0

62

2

handleBindException 의 기대의도가 방향이 맞는지 궁금합니다.

0

43

2

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

0

458

1

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

2

505

1