개발자

Spring boot 파라미터 VO 매핑 원리

2022년 11월 16일조회 2,342

현재 스프링부트로 프론트와 벡엔드를 나누어서 작업하고있는중입니다. 프론트에서 벡엔드로 전송해준 데이터를 벡엔드에서생성한 VO를 만들어서 데이터를 받고있는데 어떻게 프론트엔드에서 쏴준데이터가 VO에 담기나요? 내부원리를 알고싶습니다! 도와주세요!!

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 2

인기 답변

이양일님의 프로필 사진

안녕하세요! 질문주신 내용이 http 통신을 하시는거라 가정하고 답변을 드리겠습니다. http 헤더중에 Content-Type 이란게 있는데요, client 가 server 로 http 문서를 어떤 형태로 작성했는지를 알려주는 헤더값입니다. Spring 에서는 이 Content-Type 헤더와 사용자가 Http Body 를 변환하고자 하는 class(VO)를 체크하여 변환이 가능할경우 변환해서 넘겨주도록 구현이 되어있습니다. 여기서 VO 로 변환할때 앞서 답변해주신 분이 언급해주신 java reflection 이나 jackson 라이브러리 등이 사용되게 됩니다. 이에 대한 자세한 구현 내용을 아시고 싶으시다면, Spring 에서 정의한 HttpMessageConverter 라는 인터페이스의 구현체들을 찾아보시면 됩니다. HttpMessageConverter 를 찾아보시면 아시겠지만 위에서 언급한 http body 를 VO 로 변환해주는것 뿐만 아니라 반대로 Object 를 http content-type 에 맞게 write 하는 로직도 있는데요 이는 반대로 Spring 이 client 가 되어 Target server 로 http 요청을 보낼때 쓰이게 됩니다. Spring 에서 제공하는 http 통신 모듈인 RestTemplate 이나 WebClient 에서 HttpMessageConverter 를 어떻게 사용하고 있는지도 같이 확인하시면 좀 더 재미있으시지 않을까 하여 추가적으로 설명드렸습니다. 작업하시는데 도움이 되셨길 바라며 즐거운 주말 보내시길 바랍니다.

profile picture

익명

작성자

2022년 11월 20일

좋은답변 감사합니다~

Benjamin Kim님의 프로필 사진

실제로 http 프로토콜 데이타가 클라이언트와 서버간에 어떤 형태로 전달되는지 이해해야 합니다 전달돤 데이타 그 자체는 그게 스프링이든 자바든 리눅스든 윈도우든 관계 없겠죠? 그럼 전달된 데이타는 어떻게 java의 클래스에 쏙 들어갈까요? 배운건 new Class().. 뭐시기겠죠 네 스프링 안쪽에는 그렇게 되어 있겠죠 그럼 내거 보낸 데이타의 일부 값들, 예를 들어 name 은 어떻게(어떤규칙? 프로토콜에 관련책을 보면 이해갑니다) http 데이타 안에서 읽어서 우리 자바 new class 안의 동일한 name의 변수안에 들어가는 걸까요? 무슨 재주로? 이런건 자바sdk 가 지원하는 기능중에 클래스의 속성(변수, 함수..)을 엿볼 수 있는 기능이 있기에 가능합니다. 한번 찾아보시면 됩니다 어노테이션@ 이 등장은 하지만 뜻 그대로의 지시자일뿐입니다 특별하거나 어려울 거 없습니다 그냥 java sdk 나 spring 또는 저희 스스로 만든 라이브러리가 있다면 그 어떤 클래스, 변수, 메쏘드, 파라미터에 태그를 달아 놓는 정도로 생각하시면 됩니다 Jackson library 이나 java resolve 그리고 http protocol specification 1.1 이 적당한 검색어겠네요 스프링 키워드 검색은 그닥 큰 도움이 안될 겁니다

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!