작성
·
32
·
수정됨
0
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예
[질문 내용]
안녕하세요, 원리부터 차근차근 설명해주신 덕분에 스프링 소스 코드도 살펴볼 수 있을 것 같습니다. 감사합니다.
다름이 아니라 이 섹션과 다음 섹션을 듣고 나서 학습한 내용을 정리하려고 보니 잘 이해했는지 확실하지 않은 부분이 생겨 질문드립니다.
이해한 바는 다음과 같습니다.
FrontController 패턴 도입 동기
많은 컨트롤러에서 사용하는 공통 처리 로직을 보일러플레이트 없이, 누락 없이 사용하기 위함.
궁금한 부분은 다음과 같습니다.
이 문제를 언급하신 필터와 인터셉터로도 해결할 수 있을 것 같은데, 왜 FrontController 패턴을 사용하는지 궁금합니다.
뒤에 호출되는 컨트롤러의 구조가 HttpServlet으로 제한되지 않기 때문이라고 현재 생각하고 있습니다.
스프링에서 공통 로직을 도입할 때 실제로 DispatcherServlet(FrontController)을 확장하는 방식으로 처리하는지도 궁금합니다.
감사합니다.
답변 1
1
안녕하세요, 인프런 AI 인턴입니다.
scorbiclife님, 질문해주셔서 감사합니다. FrontController 패턴을 사용하는 이유는 여러 가지가 있지만, 말씀하신 것처럼 많은 컨트롤러에서 사용하는 공통 처리 로직을 보일러플레이트 없이, 그리고 누락 없이 사용하기 위함이라는 점이 핵심입니다.
필터와 인터셉터: 필터와 인터셉터는 요청과 응답을 가로채어 처리할 수 있는 기능을 제공하지만, FrontController는 웹 애플리케이션의 진입점으로서 모든 요청을 중재하고 적절한 컨트롤러로 요청을 전달하는 역할을 합니다. 필터와 인터셉터는 특정 로직 실행 전에 수행하는 전처리나 후처리에 적합한 반면, FrontController는 애플리케이션의 “중앙 집중식 요청 처리”를 담당합니다.
DispatcherServlet의 역할: 스프링에서는 DispatcherServlet
이 대표적인 FrontController로 사용되며, 모든 HTTP 요청이 이 서블릿을 통해 처리됩니다. 이 패턴을 통해 스프링은 일관된 요청 처리 흐름을 유지하며, 컨트롤러나 다른 구성 요소에 대한 명확한 구조를 제공합니다. 또한, HTTP 요청을 컨트롤러에 매핑할 때 중앙에서 처리하기 때문에 다양한 요청 매핑 전략을 손쉽게 적용할 수 있습니다.
DispatcherServlet
을 확장하고 공통 로직을 구현할 수도 있지만, 대부분의 경우 스프링 프레임워크에서 제공하는 기능을 조합하여 필요한 기능을 구현하는 것이 일반적입니다.
추가적으로, 스프링의 구성 요소들(예: 필터, 인터셉터, 뷰 리졸버 등)을 적절히 설정하면 원하는 로직을 효율적으로 처리할 수 있습니다. 답변이 도움이 되었길 바랍니다! 추가적인 질문이 있으시다면 언제든지 물어봐 주세요.
강의를 통해 계속해서 좋은 학습되시길 바랍니다. 감사합니다.
도움이 되었습니다. MVC 2편까지 진행하고 이 질문을 다시 살펴보아야겠네요. 감사합니다.