[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 ] 예제
@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 ] 예제
@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
반응형
'Back-End > SpringBoot' 카테고리의 다른 글
[Spring Boot] Gradle 빌드 에러 해결 - buildscript {}, pluginManagement {} and other plugins {} script blocks are allowed before plugins {} blocks, no other statements are allowed (0) | 2024.03.29 |
---|---|
Spring DI(Dependency Injection) - 의존 관계 주입 핵심 정리 (0) | 2023.02.02 |
[Spring] @RequestMapping 옵션 (0) | 2022.12.15 |
[Spring] @RequestMapping이란 그리고 동작 방식 (0) | 2022.12.14 |
@Controller와 @RestController 차이점 (2) | 2022.11.03 |
블로그의 정보
무작정 개발
무작정 개발