본문 바로가기
[Spring]/Spring MVC

스프링 MVC에서의 프런트 컨트롤러(Front Controller) & 어댑터(Adapter) 패턴

by 팡펑퐁 2023. 3. 22.
728x90

프런트 컨트롤러 패턴

  • 컨트롤러 앞에 프런트 컨트롤러 역할의 서블릿을 세우고 클라이언트의 요청을 받는다.
  • 하나의 프론트 컨트롤러가 모든 요청을 받아 요청에 맞는 컨트롤러를 찾아 호출한다.
  • 프런트 컨트롤러를 제외한 나머지 컨트롤러는 서블릿을 사용하지 않아도 된다.
  • 프런트 컨트롤러의 도입을 통해 공통 기능 등을 한 곳에서 처리할 수 있다.  

 

 

스프링 웹 MVC와 프런트 컨트롤러

  • 스프링 웹 MVC의 핵심도 프런트 컨트롤러이다.
  • 스프링 웹 MVC에서는 DispatcherServlet이 프런트 컨트롤러 패턴으로 구현되어 있다.

 

프런트 컨트롤러의 단점

프런트 컨트롤러 패턴만으로 구현된 서블릿은 한 가지 방식의 컨트롤러 인터페이스만 사용할 수 있다.

 

 

어댑터 패턴

  • 그러나, 어댑터 패턴을 이용하면 말 그대로 어댑터 역할을 하는 클래스를 두어 다양한 인터페이스의 구현 컨트롤러를 모두 처리할 수 있도록 변경이 가능하다.
  • 이를 MVC 패턴에서는 핸들러 어댑터라고 부른다.

 

핸들러

  • 컨트롤러를 뜻하며 컨트롤러 뿐만이 아니라 어떤 것이든 해당하는 종류의 어댑터만 있으면 처리할 수 있기 때문에 핸들러라는 더 넓은 범위의 이름을 사용한다.

 

 

참고

김영한 - 스프링 MVC 1편

 

728x90