직접 만들어 보았던 MVC 프레임워크와 스프링 MVC를 비교했다.
사실 전에 만들었던 MVC프레임워크크 스프링 MVC 구조와 똑같다고 한다. 클라이언트 → 프론트 컨트롤러 → 핸들러 매핑 정보 → 핸들러 어댑터 목록 → 핸들러 어댑터 → 핸들러 → 핸들러 어댑터에서 다시 프론트 컨트롤러 → 뷰 리졸버 호출 → View 반환 → render(model) 호출 → HTML 응답 이런 식이다.
다른점은 FrontController가 스프링 MVC에서는 DispatcherServlet이라는 것과 기존에 스프링 MVC에 이미 있어서 이름을 살짝 바꿔준 항목들 뿐이다.
DispatcherServlet이 스프링 MVC의 핵심이다. 디스패처 서블릿은 부모 클래스에서 HttpServlet을 상속 받아 사용하고, 서블릿으로 동작한다. 스프링 부트는 톰캣 서버를 내장하고 있는데 서버가 실행되면서 디스패처 서블릿을 서블릿으로 자동 등록하고 모든 경로를 매핑한다. 여기서 주의할 점은 모든 경로를 매핑하지만 자세한 경로가 더 우선 순위가 높기 때문에 기존에 등록한 서블릿도 함께 동작할 수 있다는 점을 알아야 한다.
디스패처 서블릿을 들여다보면 핸들러를 조회하고 핸들러를 처리할 수 있는 어댑터를 조회한다. 그리고 핸들러 어댑터를 실행하고 핸들러 어댑터를 통해 핸드러를 실행하게 되며 ModelAndView를 반환한다. 그 다음에 뷰 렌더링을 호출하고 뷰 리졸버를 통해 뷰를 찾고 View를 반환하고 뷰 렌더링을 하게 되는 구조로 되어 있다. 디스패처 서블릿의 코드가 매우 길어서 강의에서 강사님이 간추려서 보여주었는데 보여준 구조로는 이런 식으로 작동하는 것을 확인할 수 있었다.
스프링 MVC는 개발자들의 요구사항에 맞춰 기능을 계속 확장시켜 왔기 때문에 대부분의 기능들은 다 구현이 되어 있다고 한다. 때문에 우리가 필요하면 굳이 따로 만들지 않아도 검색을 통해 대부분 사용할 수 있다.
스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술을 참고하여 공부하였습니다.
'Framework & Library > Spring Boot' 카테고리의 다른 글
[Spring Boot] : 뷰 리졸버에 대해서.. (0) | 2022.01.24 |
---|---|
[Spring Boot] : 스프링이 제공하는 핸들러 매핑과 어댑터 (0) | 2022.01.24 |
[Spring Boot] : Controller를 여러 방식으로 구현하기 위해 사용한 Adapter pattern (0) | 2022.01.23 |
[Spring Boot] : 단순하고 실용적은 ModelView 객체의 중복을 제거한 컨트롤러 코딩 (0) | 2022.01.23 |
[Spring Boot] : Model 추가해서 Front Controller에서만 Servlet 사용하기 (0) | 2022.01.22 |
댓글