1) 서블릿 컨테이너 & 필터 체인

1. 클라이언트 요청 → 톰캣/제티 등 서블릿 컨테이너 수신


2. Filter 실행 (순서대로)

예) CharacterEncodingFilter, HiddenHttpMethodFilter, CorsFilter, DelegatingFilterProxy(→ Spring Security Filter Chain) 등



3. 필터 통과 후 DispatcherServlet(프론트 컨트롤러)으로 요청 전달



2) DispatcherServlet 내부 파이프라인

4. MultipartResolver: 멀티파트(파일 업로드)면 파싱


5. LocaleResolver / ThemeResolver: 로케일·테마 결정 (있다면)


6. HandlerMapping 조회: 어떤 컨트롤러 메서드가 처리할지 매핑 결정

RequestMappingHandlerMapping(대부분), 정적리소스면 ResourceHttpRequestHandler



7. (선택) HandlerInterceptor.preHandle 호출

로깅, 인증·인가 전처리, 공통 파라미터 주입 등




3) 핸들러 호출 전 바인딩 & 변환

8. HandlerAdapter 선택 → RequestMappingHandlerAdapter가 보통 담당


9. ArgumentResolver로 컨트롤러 파라미터 생성

@RequestParam, @PathVariable, @RequestBody(+ HttpMessageConverter), @ModelAttribute, @AuthenticationPrincipal 등



10. DataBinder → 바인딩/검증



@InitBinder 커스터마이징, @Valid/@Validated로 Bean Validation


4) 컨트롤러 처리

11. 컨트롤러(핸들러) 메서드 실행

반환 타입 예: String(view name), ModelAndView, ResponseEntity<T>, @ResponseBody/@RestController(바디 직접)




5) 반환값 처리 & 예외 처리

12. ReturnValueHandler로 반환값 해석

뷰 이름/ModelAndView → 뷰 렌더링 경로

@ResponseBody/ResponseEntity → HttpMessageConverter로 JSON/XML/바이너리 직렬화



13. (중간 발생 예외)

HandlerExceptionResolver(순서대로)

@ExceptionHandler(컨트롤러/@ControllerAdvice)

ResponseStatusExceptionResolver, DefaultHandlerExceptionResolver 등


예외를 응답으로 매핑(상태코드/바디/에러뷰)




6) 뷰 렌더링 (MVC 뷰의 경우)

14. Model 확정 후 ViewResolver로 뷰 찾기

ThymeleafViewResolver, InternalResourceViewResolver(JSP), 프리마커 등



15. View.render(model, request, response) → HTML 생성



7) 마무리 훅 & 응답 전송

16. HandlerInterceptor.postHandle(뷰 렌더링 전/후 시점 구현체에 따라)


17. HandlerInterceptor.afterCompletion(예외 포함 최종 정리)


18. FlashMap/FlashMapManager(리다이렉트 시 플래시 속성 관리)


19. 컨테이너가 HTTP 응답 전송 & 커넥션 정리




---

한눈에 요약(텍스트 다이어그램)

Client
  → Filters(인코딩/보안/CORS/등)
    → DispatcherServlet
      → Multipart/Locale/Theme
      → HandlerMapping (컨트롤러 선택)
      → Interceptor.preHandle
      → HandlerAdapter
         → ArgumentResolvers + DataBinder(@Valid)
         → Controller(@RequestMapping)
         ← ReturnValueHandlers (뷰 or 바디)
      → ExceptionResolvers(필요시)
      → ViewResolver + View.render (MVC)
      → Interceptor.postHandle / afterCompletion
    ← HttpResponse


---

실무 포인트(면접/코딩에서 자주 나오는 것)

정적 리소스: ResourceHttpRequestHandler가 처리(캐시/압축 설정 중요)

컨텐츠 협상: ContentNegotiation(확장자/Accept 헤더 기반)

HTTP 메시지 변환: MappingJackson2HttpMessageConverter(JSON), StringHttpMessageConverter 등

비동기 처리: Callable, DeferredResult, WebAsyncTask, SseEmitter, StreamingResponseBody

전역 예외 처리: @ControllerAdvice + @ExceptionHandler로 API 에러 스펙 통일

보안: 대부분 Spring Security Filter Chain이 컨트롤러 앞단에서 인증/인가 단락 처리


원하시면 위 흐름을 기준으로 예외 처리 템플릿(전역 에러 응답 규격)이나 커스텀 ArgumentResolver/Interceptor 샘플 코드도 바로 만들어 드릴게요.


LIST

+ Recent posts