프론트엔드와 백엔드가 따로 분리가 되어 있지 않은 프로젝트에서 자주 사용하는 Model과 ModelMap의 차이점에 대해 알아보겠습니다.
Model VS ModelMap
공통점
- 데이터 전송 : 모두 컨트롤러에서 뷰로 전달되어야 하는 속성을 보유하는 컨테이너 역할을 합니다.
- 속성 추가 : addAttribute와 같은 메소드를 사용하여 뷰에 표시할 속성을 추가할 수 있습니다.
- 범위 : Model 혹은 ModelMap에 추가된 속성은 현재 요청 수명 주기에만 사용할 수 있습니다.
차이점
- Model은 Spring에서 제공하는 인터페이스입니다.
- ModelMap은 Model의 구현체이며, LinkedHashMap을 상속받고 있어 추가 기능을 사용할 수 있습니다.
단순히 이런 차이점밖에 없으므로 취향에 따라, 혹은 팀의 컨벤션에 따라 사용하면 될 것 같습니다.
ModelAndView
ModelAndView는 모델 데이터(속성)와 뷰 정보를 하나의 객체로 결합한 클래스입니다. 모델 데이터를 전달할 뿐만 아니라 논리적 뷰 이름이나 실제 뷰 객체도 포함합니다. Model 혹은 ModelMap과의 차이점은 뷰 정보의 유무입니다.
간혹, ControllerAdvice나 Interceptor에서 특정 뷰로 넘어가야할 때 ModelAndView를 사용한 경험이 있습니다.
📖 정리
기능적으로는 세 개 모두 큰 차이점이 없으므로, 특수한 경우가 아니라면 개인의 취향이나 팀의 개발 컨벤션에 따라 사용하면 될 것 같습니다.
📝 예제 코드
Github - https://github.com/woong99/blog-example/tree/main/model
'Programming > SpringBoot' 카테고리의 다른 글
[SpringBoot] JPA 동적 스키마 (1) | 2024.11.06 |
---|---|
[SpringBoot] @ModelAttribute 작동 원리 (0) | 2024.07.17 |
[SpringBoot] Entity의 ID를 테스트에서 삽입하는 방법 (0) | 2024.06.02 |
[SpringBoot] @ResponseBody 원리 (0) | 2024.01.29 |
[SpringBoot] JSP에서의 예외 처리 (0) | 2023.12.19 |