튜터님과 면담을 하면서 스프링 개념에 대해 여쭤보셨다.
여쭤보는 질문에 대해 뭔가 알랑말랑하게 이미지가 그려졌는데..그냥 얘기를 못했다.
말씀을....못드렸다. 뭐지 뭔가 뇌에 이미지가 있었는데 하.. 그게 모르는거지 뭐
정확히 알아요? 아니요.
알고있었는데? 아니 없어요.
뭔가 알아요? 아니 없어요 그냥.

그동안 너무 기능을 개발해야된다는 생각에 사로잡혀 살았던거 같다.
돌아가는 원리도 좀 챙겨서 공부할걸이라는 생각이 들면서 바로 알아보았다.
Dispatcher Servlet
- Spring MVC 에서 모든 HTTP 요청을 처리하는 중앙 서블릿
역할
- 요청을 중앙에서 받아서 적절한 처리로 넘겨주는 역할
입구 역할
- 모든 HTTP 요청은 Dispatcher Servlet 으로 전달
요청 분배
- 요청을 처리할 적절한 핸들러로 분배
즉, 어떤 핸들러가 요청을 처리할지 결정
응답 생성
- 요청을 처리한 후 해당 응답을 클라이언트에게 반환하는 역할
Handler Mapping
- Dispatcher Servlet 요청을 받은 후, 해당 요청을 처리할 핸들러를 찾아주는 역할
역할
요청 URL과 핸들러 찾기
- 요청 URL을 기반으로 어떤 컨트롤러 메소드가 그 요청을 처리할지 결정
핸들러 반환
- 매핑이 이루어지면 해당 핸들러(컨트롤러 메소드) 반환
예시
GET "/api/users" 에 요청 시, Handler Mapping 은 UserController 의 getUsers() 메소드가 처리할건지 결정 후 해당 핸들러를 반환
Handler Adapter
- Handler Adapter 는 Handler Mapping 에서 반환된 핸들러를 실제로 실행하는 역할
핸들러 실행
- Handler Mapping 에서 받은 핸들러(컨트롤러 메소드)를 실행하여 결과를 반환
결과 반환
- 핸들러가 처리한 결과는 "ModelAndView" 형태로 반환되며, 이 결과는 다시 Dispatcher Servlet 으로 반환되어 클라이언트에게 응답
간단 흐름
- Client 요청 -> Dispatcher Servlet 전달
- Dispatcher Servlet -> Handler Mapping 에 요청을 전달하여 적절한 핸들러(컨트롤러 메소드) 찾기
- Handler Mapping -> 적절한 핸들러(컨트롤러 메소드)를 Handler Adapter 에 전달
- Handler Adapter -> 핸들러(컨트롤러 메소드) 실행 후 결과 반환
- Dispatcher Servlet -> 결과를 클라이언트에게 응답
역할 간단 정리
Dispatcher Servlet
- 모든 요청을 받아 적절한 처리로 분배하는 중앙 관리자의 역할
Handler Mapping
- 요청에 맞는 핸들러(컨트롤러 메소드)를 찾아주는 역할
Handler Adapter
- 핸들러(컨트롤러 메소드)를 실제로 실행하는 역할