1. Spring Framwork(스프링프레임워크 ) 구조
Spring Framework (스프링프레임워크)에서의 동작처리를 알아보겠습니다.
정확히는 http request를 처리하는 방식에 대한 기본적인 내용을 설명해보려고 합니다.
먼저 전체적인 흐름은 아래와 같습니다.

스프링 프레임워크의 각 구성요소에 대한 설명은 아래와 같습니다.
ServletContainer (서블릿 컨테이너)
- Client (보통 크롬, 파이어폭스 등과 같은 웹브라우저)로부터 HTTP요청을 받아 서블릿 로직을 처리할 수 있는 구성요소입니다.
- 서블릿이란 javax.servlet 패키지에 정의된 인터페이스로, 자바 class 파일로 된 서버로직이라고 볼 수 있습니다.
- ServletContainer의 대표적인 예로는 Tomcat이 있습니다.
Spring (스프링)
- Spring framework (스프링 프레임워크) 영역입니다.
DispatcherServlet (디스패처 서블릿)
- Spring framework (스프링 프레임워크)에서 front controller역할을 합니다.
- 실제 동작하기 위한 로직요청에 대해 처리할 수 있도록 해줍니다.
- HTTP 요청을 적절한 컴포넌트로 전달하고, 로직을 수행한 결과를 반환받아 처리합니다.
- dispatch의 뜻을 보내다라는 뜻으로, 이곳에 요청이 오면 실제로 로직을 수행할 컴포넌트로 요청을 보내주는 역할을 하고, 반환을 받는 역할을 합니다.
HandlerMapping (핸들러 매핑)
- Spring framework(스프링 프레임워크)에 작성된 여러 Controller(컨트롤러) 중에서 로직을 수해할 contoller를 확인해주는 컴포넌트입니다.
- HTTP 요청을 처리할 적절한 컨트롤러를 찾는 역할을 합니다.
Controller (컨트롤러)
- 개발자가 직접 개발하는 컴포넌트로, http request를 개발자가 처리할 수 있도록 개발하는 컴포넌트입니다.
Service (서비스)
- 개발자가 직접 개발하는 컴포넌트로, 비지니스 로직을 수행하는 컴포넌트이니다.
DAO (Data Access Object, 디에이오)
- 개발자가 직접개발하는 컴포넌트로, Database에 직접적으로 접근하는 객체입니다.
보통 mybatis와 같은 persistence framework를 많이 활용합니다.
ViewResolver (뷰 리졸버)
- ViewName을 기반으로 어떤 View 파일을 사용할것인지 확인해주는 컴포넌트입니다.
View (뷰)
- 개발자가 직접개발하는 컴포넌트로, 보통 UI화면을 의미합니다.
2. 시퀀스 다이어그램
시퀀스 다이어그램으로 그려보면 아래와 같이 표현할 수 있습니다.

- HTTP 요청: 클라이언트에서 HTTP 요청을 보내면, 서블릿 컨테이너가 이를 받아 처리합니다.
- DispatcherServlet으로 전달: 서블릿 컨테이너는 요청을 DispatcherServlet으로 전달합니다. 이는 web.xml 파일에 설정되어 있습니다.
- HandlerMapping 확인: DispatcherServlet은 요청의 URL과 메서드를 확인하여 @RequestMapping으로 매핑된 Controller를 찾습니다.
- Controller 호출: 찾아진 Controller가 할당되어 요청을 처리합니다.
- Service 호출: Controller는 필요한 비즈니스 로직을 처리하기 위해 Service를 호출합니다.
- DAO 호출: Service는 데이터베이스 작업이 필요할 경우 DAO를 호출합니다.
- DB 접근: DAO는 데이터베이스에 접근하여 필요한 작업(쿼리 수행)을 합니다.
- 결과 반환: DAO는 데이터베이스 작업 결과를 자바 객체로 반환합니다.
- Service -> Controller 반환: DAO의 결과를 Service가 받아 다시 Controller에 전달합니다.
- ViewName과 Model 반환: Controller는 로직 처리 결과로 ViewName과 Model을 DispatcherServlet에 반환합니다.
- ViewResolver 호출: DispatcherServlet은 ViewResolver를 사용해 ViewName에 해당하는 View 파일을 찾습니다.
- View와 Model 조합: DispatcherServlet은 Model과 View를 조합하여 최종 결과를 생성합니다.
- HTTP 응답: 최종 결과를 HTTP 응답으로 클라이언트에 반환합니다.
- 클라이언트 처리: 클라이언트는 HTTP 응답을 받아 결과를 화면에 표시합니다.
출처 : https://devscb.tistory.com/119