작성
·
30
0
11:40부터 시작하는 form을 제출했을때 호출되는 컨버터에 대한 질문입니다.
강의에서 제출 버튼 눌렀을때 127.0.0.1:8080
라는 문자가 컨트롤러에 넘어간다고 하십니다.
해당 컨트롤러에는 @ModelAttribute
가 있고 Form
을 변환하려고 했더니 IpPort
객체가 있어서 문자를 IpPort
객체로 변환해야하는데 이때 IpPortToStringConverter
이 또 호출된다고 하시는데요.
여기서 왜 IpPortToStringConverter
이 호출되는건가요? 문자에서 IpPort 객체로 변환해야하는 것이니까 StringToIpPortConverter
가 호출되어야하는 것 아닌가요?
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
제출된 폼에서 데이터가 서버로 전송될 때와 그 데이터를 다른 형태로 바꿀 때, Spring에서는 ConversionService를 통해 적절한 컨버터를 사용하여 작업을 수행합니다. 질문하신 부분에 대한 설명을 드리겠습니다.
IpPortToStringConverter
가 호출되는 시점은 실제로 StringToIpPortConverter
와 함께 사용됩니다. Spring에서는 데이터 바인딩과 렌더링을 위해 다양한 타입 컨버팅이 필요합니다.
데이터 전송 및 변환 흐름:
"127.0.0.1:8080"
) 형태로 서버에 전달됩니다.@ModelAttribute
를 통해 받은 문자열 데이터를 Form
객체로 바인딩할 때, IpPort
필드에 적절히 매핑하기 위해 StringToIpPortConverter
를 사용해 변환합니다.렌더링 시점에서의 컨버팅:
IpPort
객체를 문자열로 변환하는 과정이 필요하여 IpPortToStringConverter
가 호출됩니다. 이는 주로 뷰 템플릿에서 객체의 특정 필드를 출력하는 과정에서 필요합니다.이러한 과정은 스프링의 데이터 바인딩과 변환 과정에서 유연성을 제공하며, 양방향 데이터 흐름에서 필요한 변환 작업을 자동으로 처리하기 위해 설계되었습니다. 따라서 두 컨버터는 서로 다른 시점에서 각각 호출되며, 서로의 작업을 보완하게 됩니다.
보다 자세한 이해를 위해 기존에 논의된 내용을 참고하고 싶으시다면, 아래 관련된 질문에 대한 답변도 확인해 보세요:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.