작성
·
77
0
HTTP응답을 사용하는 경우, 핸들러어댑터는 DispatcherServlet에게 ModelAndView가 아닌 null을 반환하나요?
뷰 템플릿을 사용하는 경우, 핸들러어댑터는 항상 ModelAndView 형식을 반환하나요?
컨트롤러에서 반환값이 ModelAndView라면, returnValueHandler에서 그대로 ModlAndView 형태로 반환
컨트롤러 반환값이 viewName이라면, returnValueHandler에서 ModelAndView로 변환해서 반환
Spring MVC의 다양한 핸들러 어댑터는항상 ModelAndView 형식또는 null만 반환하나요?
제가 이해한 것이 맞을까요?
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. 장은혜님,
HandlerAdapter의 동작 방식과 관련해서 질문 주셨네요. 이를 이해하기 위해서는 Spring MVC의 흐름을 잘 파악하는 것이 중요합니다.
HTTP 응답을 사용하는 경우:
@ResponseBody
어노테이션이나 @RestController
로 선언된 경우, 응답본문에 직접 데이터를 작성합니다. 이 경우에는 ReturnValueHandler가 데이터 변환을 담당하며 View에 대한 처리가 생략되기 때문에, HandlerAdapter는 DispatcherServlet에게 ModelAndView 대신 처리한 결과나 null
을 반환하게 됩니다. 이때 메시지 컨버터가 작동하여 응답 본문을 생성합니다.뷰 템플릿을 사용하는 경우:
String
타입의 viewName을 반환하면 ReturnValueHandler가 이를 ModelAndView로 변환하여 반환합니다.Spring MVC의 다양한 HandlerAdapter:
@ResponseBody
등의 처리를 통해 직접 응답하는 경우에는 null
을 반환합니다. 하지만 이러한 구조는 프레임워크 내부에서 많은 유연성과 확장성을 갖고 있어 경우에 따라 다른 형태의 반환도 가능할 수 있으니, 기본적인 형태로 ModelAndView와 null로 이해하면 대부분 합리적입니다.아래의 게시물에서는 여러분이 질문하신 내용과 유사한 주제를 다루고 있습니다:
- View와 ReturnValueHandler
- HTTP 메시지 컨버터 사용 시 핸들러 어댑터의 반환 값
- html 대신 객체를 반환할 때 Dispatcher Servlet에서는 어떻게 처리가 되는걸까요??
이 게시물에서 더 구체적인 사례와 설명을 확인하시길 추천드립니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.