Spring MVC - Front Controller

YUNU·2023년 9월 14일
0

스프링

목록 보기
26/33
post-thumbnail

🪴 Spring MVC


🌱 Front Controller

🟦 FrontController 도입 이유

클라이언트가 요청을 하면 항상 [공통 로직 + 컨트롤러 로직]을 모두 호출해야 함
(클라이언트의 요청이 오면 서블릿 매핑으로 해당 로직을 직접 호출)

공통 로직을 처리하는 서블릿 하나를 두고 그 서블릿을 통해 필요한 컨트롤러 로직을 호출하도록 함
( 공통 로직을 처리하는 서블릿 = 프론트 컨트롤러 )

서블릿 -> 클라이언트에서 요청이 오면 WAS에서 처음으로 요청이 들어가는 곳 
      -> 프론트 컨트롤러만 서블릿으로 만들면됨, 나머지 컨트롤러는 서블릿 사용안해도 됨

➡️ 프론트 컨트롤러 서블릿 하나가 클라이언트의 요청을 모두 받음

➡️ 프론트 컨트롤러가 클라이언트의 요청에 맞는 컨트롤러를 찾아 호출

➡️ 프론트 컨트롤러를 통해 요청이 들어가는 입구를 하나로 & 공통 처리

❗ FrontController는 스프링 웹 MVC의 핵심, DispatcherServlet -> FrontController 패턴으로 구현


🟦 Adapter Pattern(어댑터 패턴)

Adapter는 변환기라 할 수 있고 변환기는 서로 다른 두 인터페이스 사이에 통신이 가능하도록 해준다.

JDBC가 어댑터 패턴을 이용해 다양한 데이터베이스 시스템을 단일한 인터페이스로 조작할 수 있게 해주는 예이다.

Adapter Pattern은 객체를 속성으로 만들어서 참조하는 디자인 패턴
➡️ 호출당하는 쪽의 메서드를 호출하는 쪽의 코드에 대응하도록 중간에 Adapter를 통해 호출

이러한 어댑터 패턴을 활용하여 프론트 컨트롤러가 다양한 방식의 컨트롤러를 처리할 수 있도록 한다.

- 핸들러 어댑터 : 프론트 컨트롤러와 핸들러 중간에서 어댑터 역할을 하는 것
  프론트 컨트롤러에서 핸들러(컨트롤러)를 바로 호출하지 않고 
  프론트 컨트롤러는 핸들러 어댑터를 통해서 핸들러(컨트롤러)를 호출하도록 함

- 핸들러 : 컨트롤러보다 더 넓은 범위, 핸들러 어댑터를 통해서 컨트롤러만이 아니라 해당하는 어댑터만 존재한다면 어떠한 종류든 호출할 수 있음


인프런 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 (김영한) 참조

profile
DDeo99

0개의 댓글