작성
·
524
3
안녕하세요. 5강 6강을 수강하던 중 몇 가지 궁금증이 생겨 질문 남깁니다.
5강 GET API에서 사용된 CalculatorAddRequest -> 생성자 O, getter O
6강 POST API에서 사용된 CalculatorMultiplyRequest -> 생성자 X, getter O
1. GET API - CalculatorAddRequest에서 number1, number2 필드에 왜 final 키워드가 필요한가요?
2. GET API - CalculatorAddRequest에서 생성자를 없애면 값이 0으로 바인딩되던데 왜그럴까요?
3. POST API - CalculatorMultiplyRequest에서는 왜 생성자가 없어도 값이 바인딩되는 걸까요? @RequestBody 어노테이션 때문일까요?
감사합니다.
답변 3
2
안녕하세요! migein7님~~ 😊 크으~~~ 강의에서 다루었던 내용을 기반으로 이렇게 저렇게 변경해보시는게 너무 대단하십니다!!! 👍 정말 빠르게 실력이 느실거에요!! 👍
질문 주신 내용에 답변 드려보겠습니다!!
1. GET API - CalculatorAddRequest에서 number1, number2 필드에 왜 final 키워드가 필요한가요?
필요하지 않습니다! 다만 아시다시피 final
키워드를 필드에 붙이면 변경이 불가능하고, DTO는 최초 객체 생성 이후 필드가 변경될 일이 없기 때문에 붙여주었습니다!
2. GET API - CalculatorAddRequest에서 생성자를 없애면 값이 0으로 바인딩되던데 왜그럴까요?
GET API에서 사용되는 DTO의 경우, POST와 달리 생성자를 통해 값이 바인딩 되기 때문입니다!
만약 생성자가 없다면, API를 통해 들어온 쿼리가 바인딩 되는게 아니라, 기본값인 0이 필드에 들어가게 됩니다.
public class Data {
private int number;
}
new Data(); // 이렇게 해보시면 number에 0이 들어 있을 겁니다!
3. POST API - CalculatorMultiplyRequest에서는 왜 생성자가 없어도 값이 바인딩되는 걸까요? @RequestBody 어노테이션 때문일까요?
네네 맞습니다!! POST API에서 사용되는 DTO의 경우, getter
를 통해 값이 바인딩 되기 때문에 생성자가 없더라도 필드에 값을 넣을 수 있는데요! @RequestBody
를 붙이게 되면 바인딩 되는 로직이 GET API와는 달라지기 때문입니다!
강의를 들으시다 또 궁금한 점이 생기신다면 편하게 질문 주세요!! 😊
감사합니다!! 🙏🙇
0
0
넵넵! 생성자가 있더라도 값이 바인딩 됩니다!!