• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

@Data 생성자

22.05.23 14:20 작성 조회수 475

0

@Data 는 롬복 어노테이션으로

@toString + @getter + @setter + @RequiredArgsConstructor + @EqualsAndHashCode

를 합친 어노테이션으로 알고 있습니다.

 

그래서 @Data를 사용했을 때

생성자, getter, setter...를 따로 안 적어주어도 되는데 

강의 8분22초에서는 생성자를 따로 생성했습니다.

@PostMapping("/api/v1/members")
public CreateMemberResponse saveMemberV1(@RequestBody @Valid Member member) {
Long id = memberService.join(member);
return new CreateMemberResponse(id);

}

@Data
static class CreateMemberResponse{
private Long id;

public CreateMemberResponse(Long id) {
this.id = id;
}
}

왜 만들어 주었는지 궁금합니다.

 

답변 1

답변을 작성해보세요.

0

y2gcoder님의 프로필

y2gcoder

2022.05.23

안녕하세요. jarry님, 공식 서포터즈 y2gcoder입니다.

@RequiredArgsConstructor는 final 키워드나 @NotNull이 붙은 필드를 포함해 생성자를 자동으로 만들어주는 애노테이션입니다. 
CreateMemberResponse의 필드는 final 키워드, @NotNull이 모두 없으므로 id를 받는 생성자를 새로 생성해줘야 합니다 :)


감사합니다.