작성
·
166
0
안녕하세요 강의 잘 듣고 있습니다
post를 통해서 json 객체가 넘어져 올때 만약 memeber 관련 데이터가 넘어올경우 @RequestBody를 사용해서 Member 클래스 매개변수에 주입이 되는 것으로 알고 있습니다. 이때
@PutMapping("/api/v2/members/{id}")
public UpdateMemberResponse updateMemberResponse(@PathVariable("id") Long id,
@RequestBody @Valid UpdateMemberRequest request){
memberService.update(id, request.getName());
Member member = memberService.findOne(id);
return new UpdateMemberResponse(id, member.getName());
}
부분에서 request 객체가
@Data
static private class UpdateMemberRequest {
private String name;
}
에서 어떤 생성자를 통해서 주입이 되는지 잘 모르겠습니다. 해당 updateMemberRequest클래스에는 기본 생성자 와 @Data에 있는 RequiredArgsConstructor 정도만 있는 것으로 알고 있는데 name에 어느 방식으로 주입이 되는지 궁금합니다
추가로 RequiredArgsConstructor는 NotNull이나 final 로만 지정된 변수들에 대해서만 초기화가 진행되는 것으로 알고있는데 이게 notnull이 아니라 notnull에도 적용 되는지 궁금합니다
감사합니다.
답변 1
0
안녕하세요. hsg0208님, 공식 서포터즈 David입니다.
.
@RequestBody의 동작은 아래 블로그를 참고하시면 좋을 것 같습니다.
@Data는 @Setter를 포함하고 있는 점을 참고해주세요.
https://jojoldu.tistory.com/407
.
추가로 질문주신 사항은 notnull이 아니라 notnull에도 라고 하셔서 무엇을 말하는지 잘 모르겠네요ㅎㅎ;
한 번 테스트 해보시고 말씀해주실 수 있으실까요?
.
감사합니다.
혹시 질문에서 언급하신 부분에서
추가로 RequiredArgsConstructor는 NotNull이나 final 로만 지정된 변수들에 대해서만 초기화가 진행되는 것으로 알고있는데
여기서 NotNull이 Lombok의 NonNull인가요?
그리고 RequiredArgsConstructor가 NonNull과 final일 때 동작하며
초기화를 진행하는게 아니라 생성자를 만들어주는 것으로 알고 있습니다.
혹시 제가 잘못 알고 있는 부분이 있을까요??
notnull과 notempty에도 적용 되는지 궁금했는데 2개의 차이는 ""를 걸러내느냐 아니냐 였는데 이게
notempty에도 RequiredArgsConstructor가 적용되는지는 테스트를 해도 잘 모르겠어서 질문드렸습니다