• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

Formatter 질문입니다.

23.03.15 15:45 작성 조회수 368

0

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.

1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
Formatter를 이용해서 String("10,000) 객체를 Number(10000)으로 바꾸어주었습니다. 그런데 Controller에서는 Integer 형식으로 받고있는데, Number에서 Integer로의 타입캐스팅은 스프링이 해주는건가요?

답변 2

·

답변을 작성해보세요.

1

y2gcoder님의 프로필

y2gcoder

2023.03.15

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

저도 궁금해서 디버깅해봤더니 생각보다 많은 구현체가 해당 과정에 참여하고 있었습니다. 제가 말로 설명드리는 것보다 디버깅해보시는 게 더 확실하게 이해가 되실 듯 하여 제가 한 디버깅 방법만 말씀드리겠습니다. 해보시고 결과를 공유해주시면 정말 감사하겠습니다.

  1. MyNumberFormatter의 parse() 메서드의 첫번째 줄에 breaking point 를 걸었습니다.

  2. 애플리케이션을 디버깅 모드로 구동합니다.

  3. 브라우저에서 http://localhost:8080/hello-v2?data=10,000 를 입력합니다.

간단하게만 말씀드리면 스프링에서 해주는 것이 맞고, FormattingConversionService 의 convert() 에서 입력한 값의 타입과 convert해줘야 하는 목표 타입을 비교해서 맞지 않을 경우, 형변환을 시도합니다. 그렇게 해서 성공하면 변형된 타입의 값을 넘겨주게 됩니다.


감사합니다.

0

황규철님의 프로필

황규철

질문자

2023.03.15

친절한답변 감사합니다~

y2gcoder님의 프로필

y2gcoder

2023.03.15

파이팅입니다!