-
Spring MVCSpring(Java) 2023. 11. 3. 17:28
디자인 패턴과 MVC패턴
Spring MVC에 대해 설명하려면 기본적으로 디자인 패턴이 무엇인지, 그 중 MVC 패턴은 무엇인지에 대해 알아야 한다.
디자인 패턴
- 디자인 패턴이란 프로그램이나 어떤 특정한 것을 개발하는 중에 발생했던 문제점들을 정리해서 상황에 따라 간편하게 적용해서 쓸 수 있는 것을 정리하여 특정한 "규약"을 통해 쉽게 쓸 수 있는 형태로 만든 것
MVC 패턴이란?
Model - View - Controller 로 구성되어 있으며,
사용자 인터페이스, 데이터 및 논리 제어를 구현하는데 널리 사용되는 소프트웨어 디자인 패턴
Model
- 데이터베이스와 연동해 데이터를 저장하고 불러오는 역할을 수행
- View나 Controller에 대해 어떠한 정보도 알지 못해야 함
View
- 모델(데이터)을 사용자에게 표시함
- 모델이 가지고 있는 데이터를 따로 저장하면 안됨
- Model과 Controller같은 다른 구성요소에 대한 정보를 모름
Controller
- Model과 View사이에서 동작하며, View 혹은 다른 외부 소스에 의해 변경요청된 이벤트를 감지
- 이벤트들에 대한 적절한 로직을 수행
- Model이나 View에 대해서 알고 있어야하며, 변경사항을 모니터링 함
Spring MVC
Servlet
- 클라이언트의 요청을 처리하도록 특정 규약에 맞춰 Java코드로 작성하는 클래스 파일
- Spring MVC 내부에서는 서블릿을 기반으로 웹 애플리케이션을 동작
- Spring Boot는 기본적으로 Apache Tomcat이 내장
Spring MVC의 구성 요소와 동작 방식
- Dispatcher Servlet은 Http Servlet을 상속받아 사용하고, 서블릿으로 동작한다.
- Dispatcher Servlet → FrameworkServlet → HttpServletBean → HttpServlet
동작 순서
- 핸들러 조회 : 핸들러 매핑을 통해 URL에 매핑된 핸들러(컨트롤러)를 조회한다.
- 핸들러 어댑터 조회 : 핸들러를 실행할 수 있는 핸들러 어댑터를 조회한다.
- 핸들러 어댑터 실행 : 핸들러 어댑터를 실행한다.
- 핸들러 실행 : 핸들러 어댑터가 실제 핸들러를 실행한다.
- ModelAndView 반환 : 핸들러 어댑터는 핸들러가 반환하는 정보를 ModelAndView로 변환하여 반환한다.
- viewResolver 호출 : 뷰 리졸버를 찾고 실행한다.
- View 반환 : 뷰 리졸버는 뷰의 논리 이름을 물리 이름으로 바꾸고, 렌더링 역할을 담당하는 뷰 객체를 반환한다.
- 뷰 렌더링 : 뷰를 통해 뷰를 렌더링한다.
'Spring(Java)' 카테고리의 다른 글
Spring과 Spring Boot의 차이점 (0) 2024.08.29 [Spring] Builder 패턴의 장점과 사용방법 (0) 2024.02.08 [Spring Boot] Error 정리 (0) 2024.01.31 [Spring] 용어정리(Updated 240131) (0) 2024.01.31 [SpringBoot] QueryDSL 사용법 + 환경설정 (0) 2024.01.31