본문 바로가기
Framework & Library/Spring Boot

[Spring Boot] : Spring MVC 구조 확인하기

by 오주현 2022. 1. 24.
반응형

직접 만들어 보았던 MVC 프레임워크와 스프링 MVC를 비교했다.

 

사실 전에 만들었던 MVC프레임워크크 스프링 MVC 구조와 똑같다고 한다. 클라이언트 → 프론트 컨트롤러 → 핸들러 매핑 정보 → 핸들러 어댑터 목록 → 핸들러 어댑터 → 핸들러 → 핸들러 어댑터에서 다시 프론트 컨트롤러 → 뷰 리졸버 호출 → View 반환 → render(model) 호출 → HTML 응답 이런 식이다.

 

다른점은 FrontController가 스프링 MVC에서는 DispatcherServlet이라는 것과 기존에 스프링 MVC에 이미 있어서 이름을 살짝 바꿔준 항목들 뿐이다.

 

DispatcherServlet이 스프링 MVC의 핵심이다. 디스패처 서블릿은 부모 클래스에서 HttpServlet을 상속 받아 사용하고, 서블릿으로 동작한다. 스프링 부트는 톰캣 서버를 내장하고 있는데 서버가 실행되면서 디스패처 서블릿을 서블릿으로 자동 등록하고 모든 경로를 매핑한다. 여기서 주의할 점은 모든 경로를 매핑하지만 자세한 경로가 더 우선 순위가 높기 때문에 기존에 등록한 서블릿도 함께 동작할 수 있다는 점을 알아야 한다.

 

디스패처 서블릿을 들여다보면 핸들러를 조회하고 핸들러를 처리할 수 있는 어댑터를 조회한다. 그리고 핸들러 어댑터를 실행하고 핸들러 어댑터를 통해 핸드러를 실행하게 되며 ModelAndView를 반환한다. 그 다음에 뷰 렌더링을 호출하고 뷰 리졸버를 통해 뷰를 찾고 View를 반환하고 뷰 렌더링을 하게 되는 구조로 되어 있다. 디스패처 서블릿의 코드가 매우 길어서 강의에서 강사님이 간추려서 보여주었는데 보여준 구조로는 이런 식으로 작동하는 것을 확인할 수 있었다.

스프링 MVC는 개발자들의 요구사항에 맞춰 기능을 계속 확장시켜 왔기 때문에 대부분의 기능들은 다 구현이 되어 있다고 한다. 때문에 우리가 필요하면 굳이 따로 만들지 않아도 검색을 통해 대부분 사용할 수 있다.



스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술을 참고하여 공부하였습니다.

반응형

댓글