강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

scorbiclife님의 프로필 이미지
scorbiclife

작성한 질문수

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

MVC 패턴 - 한계

FrontController 패턴을 사용하는 이유에 대해 제대로 이해했는지 궁금합니다.

작성

·

32

·

수정됨

0

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예

[질문 내용]
안녕하세요, 원리부터 차근차근 설명해주신 덕분에 스프링 소스 코드도 살펴볼 수 있을 것 같습니다. 감사합니다.

다름이 아니라 이 섹션과 다음 섹션을 듣고 나서 학습한 내용을 정리하려고 보니 잘 이해했는지 확실하지 않은 부분이 생겨 질문드립니다.

이해한 바는 다음과 같습니다.

  • FrontController 패턴 도입 동기

    • 많은 컨트롤러에서 사용하는 공통 처리 로직을 보일러플레이트 없이, 누락 없이 사용하기 위함.

궁금한 부분은 다음과 같습니다.

  • 이 문제를 언급하신 필터와 인터셉터로도 해결할 수 있을 것 같은데, 왜 FrontController 패턴을 사용하는지 궁금합니다.

    • 뒤에 호출되는 컨트롤러의 구조가 HttpServlet으로 제한되지 않기 때문이라고 현재 생각하고 있습니다.

       

  • 스프링에서 공통 로직을 도입할 때 실제로 DispatcherServlet(FrontController)을 확장하는 방식으로 처리하는지도 궁금합니다.

감사합니다.

답변 1

1

안녕하세요, 인프런 AI 인턴입니다.

scorbiclife님, 질문해주셔서 감사합니다. FrontController 패턴을 사용하는 이유는 여러 가지가 있지만, 말씀하신 것처럼 많은 컨트롤러에서 사용하는 공통 처리 로직을 보일러플레이트 없이, 그리고 누락 없이 사용하기 위함이라는 점이 핵심입니다.

  • 필터와 인터셉터: 필터와 인터셉터는 요청과 응답을 가로채어 처리할 수 있는 기능을 제공하지만, FrontController는 웹 애플리케이션의 진입점으로서 모든 요청을 중재하고 적절한 컨트롤러로 요청을 전달하는 역할을 합니다. 필터와 인터셉터는 특정 로직 실행 전에 수행하는 전처리나 후처리에 적합한 반면, FrontController는 애플리케이션의 “중앙 집중식 요청 처리”를 담당합니다.

  • DispatcherServlet의 역할: 스프링에서는 DispatcherServlet이 대표적인 FrontController로 사용되며, 모든 HTTP 요청이 이 서블릿을 통해 처리됩니다. 이 패턴을 통해 스프링은 일관된 요청 처리 흐름을 유지하며, 컨트롤러나 다른 구성 요소에 대한 명확한 구조를 제공합니다. 또한, HTTP 요청을 컨트롤러에 매핑할 때 중앙에서 처리하기 때문에 다양한 요청 매핑 전략을 손쉽게 적용할 수 있습니다.

DispatcherServlet을 확장하고 공통 로직을 구현할 수도 있지만, 대부분의 경우 스프링 프레임워크에서 제공하는 기능을 조합하여 필요한 기능을 구현하는 것이 일반적입니다.

추가적으로, 스프링의 구성 요소들(예: 필터, 인터셉터, 뷰 리졸버 등)을 적절히 설정하면 원하는 로직을 효율적으로 처리할 수 있습니다. 답변이 도움이 되었길 바랍니다! 추가적인 질문이 있으시다면 언제든지 물어봐 주세요.

강의를 통해 계속해서 좋은 학습되시길 바랍니다. 감사합니다.

출처: 스프링 공식 문서

scorbiclife님의 프로필 이미지
scorbiclife
질문자

도움이 되었습니다. MVC 2편까지 진행하고 이 질문을 다시 살펴보아야겠네요. 감사합니다.

scorbiclife님의 프로필 이미지
scorbiclife

작성한 질문수

질문하기