이번 포스팅에서는 Spring MVC에서 사용되는 디자인 패턴 중 Front Controller 패턴과 Adapter 패턴에 대해 알아보자.
Front Controller 패턴
front controller는 모든 요청에 대해 공통으로 처리해야 하는 로직을 수행한 뒤, 요청에 따라 다르게 처리해야 하는 내용은 요청에 맞는 controller에게 처리를 위임한다.
Spring MVC의 DispatcherServlet이 front controller의 역할을 한다.
HttpServlet 클래스를 상속받은 DispatcherServlet은 모든 url 경로(”/”)에 대해 매핑된 서블릿으로 동작한다. 따라서 모든 url 경로에서 들어오는 요청을 DispatcherServlet이 가장 먼저 처리한 뒤, 요청에 맞는 핸들러와 핸들러 어댑터를 찾아와서 핸들러(컨트롤러)에게 요청의 나머지 처리를 위임한다.
Adapter 패턴
DispatcherServlet이 컨트롤러에 요청의 처리를 맡길 때, 핸들러 어댑터를 통해 컨트롤러를 호출한다.
이러한 디자인 패턴을 adapter 패턴이라고 한다.
adapter 패턴은 호환되지 않는 인터페이스를 가진 클래스를 사용하기 위해 중간에 어댑터 클래스를 추가하여 기존의 코드를 수정하지 않고도 호환하게 만드는 방법이다.
adapter 패턴의 주요 구성 요소는 다음과 같다.
- Target: 기존의 인터페이스를 정의하는 역할을 한다.
- Adaptee: 호환되지 않는 인터페이스를 가진 클래스
- Adapter: Target 인터페이스를 구현하면서 Adaptee 클래스를 감싸서 호환성을 제공하는 역할을 한다.
DispatcherServlet은 핸들러 어댑터를 사용하여 다양한 종류의 컨트롤러를 일관성 있게 처리할 수 있다.
'Backend > Spring Boot' 카테고리의 다른 글
코드 분석을 통해 알아보는 스프링 MVC 동작 과정 (1) | 2023.10.13 |
---|