작성
·
507
1
작성글 저장2 - 클래스 분리에서 PostCreate 테스트 시 기본생성자 없이 테스트 통과가 어떻게 되는지 궁금합니다.
커뮤니티에서 저처럼 이 부분에 대해 궁금증이 생겨 질문한 글을 보았습니다.
호돌맨님이 그 글에서 링크 건 동욱님 글도 보고 여러 가지 찾아봤는데요.
제 나름대로 결론을 지은 것을 말씀드리면
기본 생성자가 없을 때는 ObjectMapper가 인스턴스를 생성해 직렬화를 진행할 때 인자와 멤버 변수 간의 관계를 몰라서 그런게 아닐까 생각이 됩니다
그리고 호돌맨님의 답변 중 기본 생성자 없이 title, content에 내용을 넣으려면 어떻게 해야하는지에 대해서 고민해봐야 된다고 하셨는데요
저는 일단 아래와 같은 방법을 사용해서 테스트를 통과했습니다.
@ToString
@Getter
public class PostCreate {
@NotBlank(message = "제목은 필수입니다!")
public String title;
@NotBlank(message = "내용은 필수입니다!")
public String content;
@Builder
@JsonCreator
public PostCreate(@JsonProperty("title") String title, @JsonProperty("content") String content) {
this.title = title;
this.content = content;
}
}
혹시 제가 한 방법말고 기본생성자 없이 내용을 넣는 방법을 찾으셨는지? 궁금하고
어떻게 호돌맨님은 기본생성자 없이 테스트가 통과 됐는지.. 궁금합니다...
답변 2
2
추가 적으로 JsonCreator를 이용하지 않아도 기본 생성자를 private으로 바꿔서 진행해도 될 것 같습니다
작은 부분이라고 생각했는데 이 부분에 대해서 공부하면서 자바의 직렬화와 역직렬화, 그리고 불변성 보장에 대한 것 등 많은 것을 공부할 수 있었습니다!
0
안녕하세요. 호돌맨입니다.
@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;
}
}
위 코드에서는 생성자를 통해 title
, content
값이 들어갑니다.
혹시 원하신는 답변이 이건... 아니시죠?
미안합니다.