FrontController 패턴에 대해서 알아보자
2022. 6. 11. 16:18ㆍBackEnd(Java)/Spring Boot
Spring을 통하여 개발을 할 때 MVC 패턴을 적용하여 layer를 나누어서 개발을 진행한다.(그림 1 참고)
그러나, MVC 패턴에서의 컨트롤러의 단점이 존재한다.
단점
1. 포워드 중복
: View layer로 이동하는 코드가 항상 중복 호출된다. 클래스를 만들어 공통화해도 되지만, 결국 호출하는 코드가 각각 들어가게 된다.
RequestDispatcher dispatcher = request.getRequestDispatcher(viewPath);
dispatcher.forward(request, response);
2. ViewPath 중복
: jsp 경로가 변경되면 전체 코드를 다 변경해줘야 한다.
String viewPath = "/WEB-INF/views/new-form.jsp";
3. 테스트 코드 작성 어려움
: HttpServletRequest, HttpServeltResponse를 사용하는 코드는 TC를 작성하기 어렵다.
HttpServletRequest request, HttpServletResponse response
4. 공통 처리 어려움
: 기능이 복잡해질수록 컨트롤러 layer에서 공통으로 처리해야 하는 부분이 많아질 것이다. 그에 따른 코드가 중복으로 사용하게 되고 변경에 따른 유지보수 비용이 늘어나게 될 것이다.
이러한 문제를 해결하기 위해선 각각의 컨트롤러를 호출하기 전에 먼저 공통 기능을 처리해야 한다.
프론트 컨트롤러(Front Controller) 패턴을 도입하여 공통기능을 처리하여 해결할 수 있다!(그림 2 참고)
FrontController 패턴 특징
- 스프링 웹 MVC에서 DispatcherServlet이 FronController 역할을 함(FrontController 패턴으로 구현되어 있음)
- 공통처리 가능
- 프론트 컨트롤러 서블릿 하나로 모든 Client 요청을 받음
- 프론트 컨트롤러가 요청에 맞는 컨트롤러 찾아서 호출
- 스프링 웹 MVC의 핵심이 바로 FrontController 패턴
반응형
'BackEnd(Java) > Spring Boot' 카테고리의 다른 글
로깅에 대하여 알아보자 (0) | 2022.06.22 |
---|---|
DTO <-> Entity 변환 과정 (0) | 2022.06.17 |
웹서버 / WAS 서버 차이 (0) | 2022.06.01 |
누구나 쉽게 AWS와 Spring Boot로 서버 구축&배포 해보기 - 3편 (0) | 2022.05.13 |
누구나 쉽게 AWS와 Spring Boot로 서버 구축&배포 해보기 - 2편 (0) | 2022.05.07 |