2025.11.24 - [Spring/Spring Boot] - [Spring Boot] Front Controller 패턴이란?
[Spring Boot] Front Controller 패턴이란?
0. 참고자료https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술| 김영한 - 인프런 강의현재 평점 5.0점 수강생 29,838명인 강의를 만나보세요. 웹 애플리케이
aibigdata-study.tistory.com
위 내용이 다음 내용 중에 나오니 참고하길 바란다.
참고로 다음 자료는 김영한 - spring MVC1 강의에서 가져온 것이다.
1. Spring Boot 란?
Spring Boot = 내장 톰캣(서블릿 컨테이너 + a ) + Spring Framework

2. Spring Boot 실행 과정
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
위 코드를 실행시키면 다음 과정이 진행됨.
1. main() 실행
↓
2. 내장 Tomcat 시작 (서블릿 컨테이너 구동)
↓
3. DispatcherServlet 등록 및 초기화
↓
4. Spring 컨텍스트 로딩
↓
5. @Controller, @RestController 스캔 및 매핑
↓
6. 서버 Ready (포트 리스닝 시작)
3. DispatcherServlet 이란?
- DispatcherServlet은 Front Controller 패턴을 구현한 것
- 서블릿 컨테이너가 새로 생성한 request와 response 객체를
DispatcherServlet에 전달
- DispatcherServlet은 요청에 따라 적절한 컨트롤러를 선택하고,
파라미터 변환, JSON 변환, 예외 처리 등 복잡한 작업을
자동으로 처리해줌

1. 핸들러 조회: 핸들러 매핑을 통해 요청 URL에 매핑된 핸들러(컨트롤러)를 조회한다.
2. 핸들러 어댑터 조회: 핸들러를 실행할 수 있는 핸들러 어댑터를 조회한다.
3. 핸들러 어댑터 실행: 핸들러 어댑터를 실행한다.
4. 핸들러 실행: 핸들러 어댑터가 실제 핸들러를 실행한다.
5. ModelAndView 반환: 핸들러 어댑터는 핸들러가 반환하는 정보를 ModelAndView로 변환해서 반환한다.
6. viewResolver 호출 : 뷰 리졸버를 찾고 실행한다.
- JSP의 경우: InternalResourceViewResolver 가 자동 등록되고, 사용된다.
7. View 반환: 뷰 리졸버는 뷰의 논리 이름을 물리 이름으로 바꾸고, 렌더링 역할을 담당하는 뷰 객체를 반환한다.
- JSP의 경우 `InternalResourceView(JstlView)` 를 반환하는데, 내부에 `forward()` 로직이 있다.
8. 뷰 렌더링: 뷰를 통해서 뷰를 렌더링 한다.
4. 전체 흐름 다이어그램
[클라이언트] GET /api/users/123
↓
[Tomcat]
↓
[DispatcherServlet] ← "중앙 컨트롤 타워"
↓
├─ 1. HandlerMapping에 물어봄
│ "이 URL 누가 처리해?"
│ → "UserController.getUser()요!"
│
├─ 2. HandlerAdapter에 물어봄
│ "어떻게 호출해?"
│ → "@PathVariable로 123L 추출해서 전달!"
│
├─ 3. Interceptor 실행
│ preHandle() 호출
│
├─ 4. Controller 실행
│ UserController.getUser(123L)
│ → User 객체 반환
│
├─ 5. MessageConverter
│ User 객체 → JSON 변환
│
├─ 6. Interceptor 실행
│ postHandle() 호출
│
└─ 7. 응답 작성
{"id":123,"name":"Min",...}
↓
[Tomcat]
↓
[클라이언트] 응답 받음
서블릿 = HTTP 요청을 처리하는 자바 클래스의 규격
DispatcherServlet = Spring이 만든 특별한 서블릿 (모든 요청을 받아서 적절한 컨트롤러로 분배)
'Spring > Spring Boot' 카테고리의 다른 글
| [Spring Boot] Front Controller 패턴이란? (0) | 2025.11.24 |
|---|---|
| [Spring Boot] 서블릿이란? (0) | 2025.11.24 |
| Spring 과 객체지향, Spring이 Java에게 주는 영향, 다형성 (0) | 2025.01.22 |