2021. 5. 2. 21:31ㆍSpring
안녕하세요.
오늘은 Spring MVC의 동작 원리에 대해 아주 간단하게 정리해볼까 합니다.
길게 적을만한게 없어서, index도 생략할게요.
💎 Spring MVC ?
먼저 Spring MVC는 스프링의 서브 프로젝트로, Servlet/JSP 보다 빠른 웹 개발이 가능합니다.
아무래도 국내에서 많이 사용하는 이유 중 큰 비중이 전자정부 표준 프레임워크라는 점이죠.
Spring MVC는 크게 일반 자바 영역과 Web 관련영역으로 나뉘어져 있어요.
흔히 xml로 설정할 때 일반 자바 설정은
applicationContext.xml (intelliJ) 혹은 root-context.xml (eclipse) 에서,
Web부분을 설정할 땐
dispatcher-servlet.xml (intelliJ) 혹은 servlet-context.xml (eclipse) 에서 작업하죠.
설정 관련 xml에서는 web.xml도 있는데요.
web.xml은 Tomcat과 관련된 부분입니다.
전체적인 구조를 확인해보면 아래의 그림과 같습니다.
기능 별로 모듈화하여 개발할 수 있어 유지보수에 쉽다는 장점이 있죠.
그렇다면, 스프링은 어떻게 사용자의 요청을 받아서
적절한 컨트롤러를 찾고 적절한 Bean 들을 찾아 데이터를 가져올까요?
⚙️ 기본 동작 방식
✔️ 첫 번째, DispatcherServlet
가장 먼저, Client가 요청을 보내면 DispatcherServlet 클래스의 객체가 요청을 받습니다.
✔️ 두 번째, HandlerMapping
그 다음 DispatcherServlet은 요청을 HandlerMapping에게 던지게 되고,
HandlerMapping은 여러개의 controller 파일 중,
request에 해당하는 적합한 controller를 찾아서 연결합니다.
✔️ 세 번째, HandlerAdapter
HandlerMappring이 적합한 Controller를 찾으면,
다시 DispatcherServlet으로 돌아와서 HandlerAdapter에게 요청을 보냅니다.
HandlerAdapter은 controller의 메소드들 중 요청에 맞는 적합한 메소드를 매칭합니다.
✔️ 네 번째, ViewResolver
그 다음으로 ViewResolver를 찾아서 적합한 View를 찾습니다.
그리고 나서 마지막으로 View를 Response로 반환합니다.
전체적으로 확인하면 아래와 같습니다.
그럼 오늘의 포스팅은 여기까지 하고 마치도록 하겠습니다.
'Spring' 카테고리의 다른 글
@ExceptionHandler, @ControllerAdvice (3) | 2022.03.08 |
---|---|
Spring Exception, 제대로 처리하기 (0) | 2022.03.06 |
Spring, 3-Tier-Architecture (0) | 2021.05.06 |
Spring MVC, DB 연결하기 (0) | 2021.04.18 |
Spring MVC, 어렵지 않게 만들기 (0) | 2021.04.09 |
Backend Software Engineer
𝐒𝐮𝐧 · 𝙂𝙮𝙚𝙤𝙣𝙜𝙨𝙪𝙣 𝙋𝙖𝙧𝙠