Notice
Recent Posts
Recent Comments
Link
Welcome! Everything is fine.
[Spring] Spring Boot에서 URI가 컨트롤러에 매핑되는 흐름 본문
728x90
URI란?
- URI(Uniform Resource Identifier) : 인터넷 상의 자원을 식별하는 통합 자원 식별자.
- 자원의 위치뿐만 아니라 이름이나 식별 정보를 포함하여 자원을 고유하게 지칭하는 문자열이다.
- URI는 URL, URN의 상위 개념이다.

URI와 URL의 차이
- URL(Uniform Resource Locator) : URI의 한 형태로, 네트워크상에서 자원의 위치와 접근 방법(프로토콜, 도메인, 경로 등)을 명시하는 규약.
- 모든 URL은 URI이지만, 모든 URI가 URL은 아니다.
Spring Boot에서 URI가 컨트롤러에 매핑되는 흐름
이제 Spring Boot에서 URI가 컨트롤러에 매핑되는 흐름을 살펴보자. DispatcherServlet의 동작 방식이라고 봐도 무방하다.
참고 자료로 본 블로그에 있던 DispatcherServlet의 처리 과정 그림을 차근 차근 이해하기 위해 직접 그려봤다.

1. 사용자(클라이언트)로부터 요청이 들어오면, 가장 먼저 DispatcherServlet이 받는다.
- DispatcherServlet은 HTTP 프로토콜로 들어오는 모든 요청을 가장 먼저 받아 적합한 컨트롤러에 위임하는 프론트 컨트롤러이다.
2. HandlerMapping이 요청 URI와 매핑된 컨트롤러를 찾아준다.
- HandlerMapping은 @RequestMapping, @GetMapping 같은 어노테이션 정보를 기준으로 어떤 컨트롤러가 처리할 수 있는지 결정한다.
3. HandlerAdapter가 요청 파라미터를 바인딩하고, 선택된 컨트롤러 메서드를 호출한다.
- HandlerAdapter는 어댑터 패턴 개념을 차용하여, DispatcherServlet이 컨트롤러의 구현 방식에 구애받지 않고 요청을 위임할 수 있도록 한다.
4. HandlerAdapter가 컨트롤러를 호출한다.
- 선택된 HandlerAdapter가 실제 RestController 메서드를 실행한다.
- 실행 전에 @PathVariable, @RequestBody 등의 요청 파라미터 바인딩이 이루어진다.
5. 컨트롤러가 응답 데이터를 반환한다. (ResponseEntity, DTO 등)
- 비즈니스 로직을 수행하기 위해 Service 계층을 호출하고, 필요 시 Repository를 통해 DB에 접근한다.
- 이 반환값을 HandlerAdapter가 받는다.
6. HandlerAdapter가 ResponseEntity를 처리한다.
- @RestController가 붙은 컨트롤러 메서드의 반환값은 뷰가 아닌 응답 본문으로 처리되며, JSON/XML 같은 형식으로 변환할 때는 HttpMessageConverter가 직렬화를 수행한다.
- 뷰 템플릿이라면 ViewResolver가 화면을 렌더링한다.
7. 최종적으로 가공된 응답 객체를 DispatcherServlet에 다시 전달한다.
8. DispatcherServlet은 응답을 HTTP 응답으로 변환하여 클라이언트에 반환한다.
[ 참고 자료 ]
더보기
🌐 URL / URI / URN 차이점 - 한방 이해하기
URL / URI / URN 차이점 우리가 브라우저를 통해 웹을 이용하게 된다면, URL 단어는 익숙할 것이다. 하지만 가끔 뭔가 비스무리하면서도 다른 URI와 URN 이라는 단어를 사용하기도 하는데 이번 시간에
inpa.tistory.com
Spring 웹 요청 흐름(DispatcherServlet)
회사에서 신입 개발자 교육용으로 만들었던 자료입니다. 스프링에서 웹 요청 처리 흐름에 대한 내용으로 어...
blog.naver.com
[Spring] Dispatcher-Servlet(디스패처 서블릿)이란? 디스패처 서블릿의 개념과 동작 과정
이번에는 servlet의 심화 또는 대표주자인 dispatcher-servlet에 대해서 알아보도록 하겠습니다. 1. Dispatcher-Servlet(디스패처 서블릿)의 개념 [ Dispatcher-Servlet(디스패처 서블릿) 이란? ] 디스패처 서블릿의
mangkyu.tistory.com
'Spring' 카테고리의 다른 글
| [Spring] Redis ZSET + RabbitMQ 적용해 이벤트 오픈 알림 구현하기 (0) | 2025.04.23 |
|---|---|
| [트러블슈팅] 순환 참조 오류(Circular Dependency) (0) | 2025.04.16 |
| Spring Security + JWT 사용하기 (0) | 2025.03.15 |