모 커뮤니티에 스프링 컨트롤러에서 ModelAndView가 아닌 String 으로 반환 할 경우 어떻게 되나 라는 글이 올라왔다.


대충 알고 있지만, 한정 정리를 해볼까한다.


소스코드 : STS케플러 버전에서 Spring MVC Project를 생성하면 아래와 같은 HomeController 코드가 기본으로 생긴다. 보시다시피 한국에서 가장 많이 쓰이는(?)  ModelAndView 반환 형식이 아니다 String이다.

그럼 이 녀석은 어떻게 ModelAndView로 되는걸까?





DispatcherServlet을 통하는것은 동일 하다. 이후 적용되는 ViewNameMethodReturnValueHandler를 참고하면


String 형식일 경우, mavContainer 에 ViewName을 셋팅하는 작업을 하고 있음을 볼 수 있다. 이 코드에서 추가로 볼 수 있는 결국에 이렇게 mavContainer에 셋팅 된 이후




RequestMappingHandlerAdapter에서

ModelMap model = mavContainer.getModel();

ModelAndView mav = new ModelAndView(mavContainer.getViewName(), model);

으로 ModeAndView를 확정한다.


신고


티스토리 툴바