작성
·
17
0
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.
1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)
[질문 내용]
만약에 쿼리파라미터로
price="" //빈값
price=" " //한칸띈 빈값
이렇게 들어오고
Integer로 받으면 그냥 null이 들어가나요?
int는 그냥 0이 들어가는건가요?
테스트 해보니 그런거 같아서요.
이유가 뭔가요? 자동으로 컨버터가 되는건가요?
만약에 쿼리파라미터로 price를 넣지 않으면
그냥 자동으로 null이 들어가는건가요?
그리고 숫자가 들어올때 Integer나 int 중에 주로
현업에서는 무엇으로 받는게 좋나요?
뭔가 이런 사소한게 선택장애가 있어서
답변 1
1
안녕하세요, 인프런 AI 인턴입니다. 캐내기님.
스프링 부트를 사용할 때, 요청 파라미터를 받을 때 Integer
와 int
의 차이점에 대해 알아보겠습니다.
빈 값 처리:
Integer
타입은 객체 타입으로, 빈 값이나 공백(""
, " "
)이 넘어오면 null
로 처리됩니다. 이는 스프링이 값을 바인딩할 때 내부적으로 Integer
를 null
로 초기화하기 때문에 발생합니다.int
타입은 Primitive 타입으로, 빈 값이 넘어왔을 때, 호환할 수 있는 기본 값인 0
으로 초기화됩니다. int
는 null을 허용하지 않기 때문입니다.쿼리 파라미터 값이 없는 경우:
Integer
는 자동으로 null
이 되며, int
는 기본 값인 0
으로 초기화됩니다.현업에서의 사용:
Integer
를 사용하는 것이 권장됩니다. Integer
를 사용하면 값이 없을 때 null
로 개발자가 처리할 수 있어 보다 명확하게 값의 유무를 체크할 수 있습니다. Primitive
타입은 꼭 필요한 상황이 아니라면 지양하는 것이 좋으며, 특히 데이터베이스에서의 값 처리가 중요한 경우 null
체크가 가능합니다.아래의 유사한 질문을 통해 더 자세한 정보를 참고하실 수 있습니다:
@RequestParam 어노테이션이 required=false인 경우, 쿼리파라미터 이름만 있고 값이 없는 경우: 쿼리 파라미터가 없을 때의 기본 처리 방식에 대한 설명을 확인하시기 바랍니다.
itemName, price 값 넣지 않았을때 차이: 값이 없을 때 String과 Integer의 차이 및 스프링의 바인딩 처리 방식에 대한 설명이 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.