[Spring] Model, ModelAndView 차이점 (feat.ModelAndView를 지양하자)
by 무작정 개발반응형
Spring framework, SpringBoot에서 사용하는 Model과 ModelAndView의 차이점에 대해 정리할 것이다.
스프링 개발을 진행할 때 Controller(컨트롤러)에서 파라미터를 모델로, 반환(return)은 View의 경로, 이름 등을 사용합니다.
필자 또한 Model, ModelAndView를 사용하였고, 국비 강의를 들을 때는 SpringBoot에서는 ModelAndView를 꼭 사용한다고 배웠습니다.
결론은?
들어가기 전에 앞서 과거에는 그랬으나 요즘 개발 트렌드에서는 ModelAndView를 잘 사용하지 않는다고 합니다.
- ModelAndView는 @Controller 어노테이션을 사용하기 전부터 사용되었고, Spring MVC가 @Controller 어노테이션을 지원하기 시작한 후로 ModelAndView를 잘 사용하지 않는다고 합니다.
- 또한 스택오버플로우(stackoverflow)에서도 ModelAndView를 직접 반환하는 것은 구식이라고 말합니다.


Model, ModelAndView의 차이점 및 예제
[ ModelAndView ] 예제
java@Controller @RequestMapping("/main") public class BoardController { @RequestMapping(value = "/") public ModelAndView index() { ModelAndView mav = new ModelAndView(); mav.addObject("name", "홍길동"); mav.setViewName("main/index"); return mav; } @RequestMapping(value = "/") public ModelAndView index() { ModelAndView mav = new ModelAndView(); List<BoardDto> lists = boardService.getLists(start, end, searchKey, searchValue); mav.addObject("lists", list); mav.setViewName("main/index"); return mav; } }
[ Model ] 예제
java@Controller @RequestMapping("/main") public class BoardController { @RequestMapping(value = "/") public String index(Model model) { model.addAttribute("name", "홍길동"); return model; } @RequestMapping(value = "/") public String index(Model model) { model.addAttribute("lists", boardService.getLists(start, end, searchKey, searchValue)); return "main/index"; } }
Model 방식(파라미터 방식)은 메서드에 파라미터로 넣어주고 String 형태로 반환한다.
- Model에 값을 넣을 때 addAttribute() 사용
ModelAndVIew 방식(컴포넌트 방식)은 ModelAndView 객체를 생성해서 객체 형태로 반환한다.
- 말 그대로 Model + View를 합쳐놓은 방식이다.
- 값을 넣을 때는 addObject()를 사용하고, 값을 보낼 View를 세팅하는 것은 setViewName()을 사용한다.
Reference
ModelAndView와 Model 차이 - 인프런 | 질문 & 답변
안녕하세요! 김영한 강사님 늘 강의 잘 보고 있습니다@Model 와 @ModelAndView 차이가 궁금합니다. addAttribute에 데이터를 담고 return으로 화면으로 이동하는 것과 setView를 지정해주고 addObject로 넘겨
www.inflearn.com
블로그의 정보
무작정 개발
무작정 개발