지난편에서 Servlet에 대해 살펴보았다.
2022.07.12 - [풀스택 개발자/Spring Boot] - [SpringBoot] 스프링부트 이해하기- 1편 Servlet이란(feat. Web Container)
[SpringBoot] 스프링부트 이해하기- 1편 Servlet이란(feat. Web Container)
최근 스프링부트 인강을 듣고 학원에서 나눠준 템플릿 위에 간단한 CRUD 게시판을 만들어보았는데, 스프링부트의 여러 설정파일이나 이 간단한 어플리케이션이 어떻게 동작하는지 전혀 모르는
daydayplus.tistory.com
이번 편에서는 드디어 SpringBoot/Spring에서는 이 서블릿이 어떻게 작동하는지 알아보았다.
Front Controller 패턴
우선 FrontController패턴에 대해 알아야한다. 이전에 살펴보았던 서블릿은 서버에서 제공하고자 하는 페이지(서비스/기능)마다 하나씩 구현하여 사용하였다. 하지만 각 서블릿마다 공통으로 처리하는 부분이 있기 때문에 페이지가 많아질 수록 많은 중복되는 코드가 많아지는 문제가 생긴다. 이를 해결하고자 한 것이 'Front Controller Pattern'이다.
Front Controller는 기존의 공통으로 처리하는 부분을 묶어서 가장 먼저 request를 받고, 해당하는 서비스를 호출하는 컨트롤러를 호출한다. 이렇게 하면 인코딩이나 에러처리 등 많은 코드 중복을 제거할 수 있다.
DispatcherServlet
스프링/스프링부트에서 사용하고 있는 패턴이 바로 front controller pattern이고, 이 서블릿의 이름이 'DispatcherServlet'이다.
이것의 동작하는 흐름은 아래 그림과 같다.
기존에 다수의 서블릿 객체가 각각 서비스 호출 기능을 맡아서 했다면, 디스패쳐 서플릿은 하나만 존재하기 때문에 우선 모든 리퀘스트가 이쪽으로 들어온다. 그래서 적절한 컨트롤러를 호출할 필요가 있는데 그때 핸들러매핑을 통해서 그 기능을 수행한다.
스프링에서는 디스패쳐 서블릿을 사용하는 덕분에, 기존처럼 일일히 서블릿을 만들고 .xml 환경설정파일을 관리할 필요가 없어졌기 때문에 개발자들은 더욱 서비스 로직에 집중할 수 있게 되었다고 한다.
무작정 스프링부트 코드를 따라치며 썼던 것들이 어떻게 동작하는지 조금씩 알아가고 있는 것 같다..ㅎㅎㅎ
'Back-end > Spring Boot' 카테고리의 다른 글
[SpringBoot] 스프링부트 이해하기- 4편 Reflection(feat. 동적 로딩) (0) | 2022.07.16 |
---|---|
[SpringBoot] 스프링부트 이해하기- 3편 IoC와 DI 쉬운 버전 (0) | 2022.07.14 |
[SpringBoot] 스프링부트 이해하기- 1편 Servlet이란(feat. Web Container) (0) | 2022.07.12 |
Entity / Value Object / DTO / DAO 간단하게 개념 정립하기 (0) | 2022.07.03 |
[에러해결 SpringBoot] Lombok @DATA 컴파일 에러 (0) | 2022.07.03 |