FrontController 패턴을 사용하는 이유에 대해 제대로 이해했는지 궁금합니다.
54
작성한 질문수 13
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예
[질문 내용]
안녕하세요, 원리부터 차근차근 설명해주신 덕분에 스프링 소스 코드도 살펴볼 수 있을 것 같습니다. 감사합니다.
다름이 아니라 이 섹션과 다음 섹션을 듣고 나서 학습한 내용을 정리하려고 보니 잘 이해했는지 확실하지 않은 부분이 생겨 질문드립니다.
이해한 바는 다음과 같습니다.
FrontController 패턴 도입 동기
많은 컨트롤러에서 사용하는 공통 처리 로직을 보일러플레이트 없이, 누락 없이 사용하기 위함.
궁금한 부분은 다음과 같습니다.
이 문제를 언급하신 필터와 인터셉터로도 해결할 수 있을 것 같은데, 왜 FrontController 패턴을 사용하는지 궁금합니다.
뒤에 호출되는 컨트롤러의 구조가 HttpServlet으로 제한되지 않기 때문이라고 현재 생각하고 있습니다.
스프링에서 공통 로직을 도입할 때 실제로 DispatcherServlet(FrontController)을 확장하는 방식으로 처리하는지도 궁금합니다.
감사합니다.
답변 1
1
안녕하세요, 인프런 AI 인턴입니다.
scorbiclife님, 질문해주셔서 감사합니다. FrontController 패턴을 사용하는 이유는 여러 가지가 있지만, 말씀하신 것처럼 많은 컨트롤러에서 사용하는 공통 처리 로직을 보일러플레이트 없이, 그리고 누락 없이 사용하기 위함이라는 점이 핵심입니다.
필터와 인터셉터: 필터와 인터셉터는 요청과 응답을 가로채어 처리할 수 있는 기능을 제공하지만, FrontController는 웹 애플리케이션의 진입점으로서 모든 요청을 중재하고 적절한 컨트롤러로 요청을 전달하는 역할을 합니다. 필터와 인터셉터는 특정 로직 실행 전에 수행하는 전처리나 후처리에 적합한 반면, FrontController는 애플리케이션의 “중앙 집중식 요청 처리”를 담당합니다.
DispatcherServlet의 역할: 스프링에서는
DispatcherServlet이 대표적인 FrontController로 사용되며, 모든 HTTP 요청이 이 서블릿을 통해 처리됩니다. 이 패턴을 통해 스프링은 일관된 요청 처리 흐름을 유지하며, 컨트롤러나 다른 구성 요소에 대한 명확한 구조를 제공합니다. 또한, HTTP 요청을 컨트롤러에 매핑할 때 중앙에서 처리하기 때문에 다양한 요청 매핑 전략을 손쉽게 적용할 수 있습니다.
DispatcherServlet을 확장하고 공통 로직을 구현할 수도 있지만, 대부분의 경우 스프링 프레임워크에서 제공하는 기능을 조합하여 필요한 기능을 구현하는 것이 일반적입니다.
추가적으로, 스프링의 구성 요소들(예: 필터, 인터셉터, 뷰 리졸버 등)을 적절히 설정하면 원하는 로직을 효율적으로 처리할 수 있습니다. 답변이 도움이 되었길 바랍니다! 추가적인 질문이 있으시다면 언제든지 물어봐 주세요.
강의를 통해 계속해서 좋은 학습되시길 바랍니다. 감사합니다.
servlet과 container에 대한 질문입니다
0
25
1
api를 어느 컨트롤러에 작성해야하는지는 어떤 기준으로 해야하나요?
0
64
1
jsp 의존성 수정 요청
0
79
2
요즘 웹 서버가 주로 사용되는 이유는 SPA 구조 때문일까요 ?
0
143
1
save() 메서드 문의
0
67
1
절대 경로로 templates/basic 하위 파일 열면 css 적용 안되는 현상
0
101
1
request-body-json
0
83
2
MVC 패턴의 적용 단위
0
97
1
RequestMapping을 이용한 핸들러, 어댑터
0
119
2
save 후 결과화면
0
89
2
jsp를 이용한 view
0
97
1
application.properties에 debug 추가해도 결과가 똑같습니다.
0
178
1
수업 코드 제공 관련 문의
0
97
2
RequestMappingHandlerAdapter의 Controller 호출 과정
0
100
3
파일 오픈 시
0
70
1
스프링 배치 관련
0
78
1
@RequestParam의 defaultValue가 blank 값도 처리하는 지 여부
0
112
1
postman으로 /request-body-json-v1 호출시 500 error
0
96
1
프론트엔드와 백엔드의 mvc, rest api에 대한 질문
0
79
1
모델의 역할과 계층 분리에 대한 이해 차이 + 추가질문
0
111
1
console log 출력 관련 질문입니다.
0
75
1
애플리케이션이 실행 되지 않습니다 ㅠㅠㅠ
0
139
1
html 변경하는 부분 적용 문제
0
103
1
한글 깨짐
0
76
2





