inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

프론트 컨트롤러 도입 - v1

controllerV1 사용이유

해결된 질문

239

규원

작성한 질문수 16

0

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

[질문 내용]
V3까지 공부하다가 너무 헷갈려서 다시 V1으로 와서 공부하고있습니다. 3분 30초 쯤에 ControllerV1 즉 interface를 사용하는 이유를 들어도 너무 헷갈립니다.
각각의 컨트롤러는 인터페이스를 의존하고 프론트컨트롤러는 인터페이스를 통해 request, response를 넘겨주면서 각각의 컨트롤러가 받는 형식으로 생각하고 있었습니다. 근데 정작 왜 사용하는지 제대로 이해를 못하고있는 것 같아 질문드립니다.

spring mvc

답변 1

0

인프런 AI 인턴

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

규원님의 질문은 ControllerV1 인터페이스의 사용 이유와 관련되어 있습니다. 스프링 MVC에서 인터페이스를 사용하는 주된 이유는 다형성을 활용하여 유연하게 컨트롤러를 관리하기 위함입니다.

ControllerV1과 같은 인터페이스를 사용하는 이유는 여러 종류의 구현체(Controller)를 통일된 방식으로 처리할 수 있게 하기 위해서입니다. 프론트 컨트롤러는 이 인터페이스를 통해 다양한 구현체를 동일한 방식으로 호출할 수 있으며, 이를 통해 코드의 유연성과 확장성을 증가시킬 수 있습니다. 예를 들어, 새로운 형태의 컨트롤러를 추가하고 싶을 때, 해당 인터페이스를 구현만 하면 기존 시스템에 손쉽게 통합할 수 있습니다.

질문하신 내용과 유사한 문맥을 찾아보니, 다음의 질문과 답변이 도움이 될 수도 있겠습니다:

  • 인터페이스의 사용 목적과 객체에서는 인터페이스를 사용하는 목적과 그로 인해 코드에 어떤 이점이 있는지에 대해 논의하고 있습니다. 여기서 ControllerV1 인터페이스를 사용하는 이유에 대한 추가적인 통찰을 얻을 수 있을 것입니다.

이러한 방식으로 인터페이스를 사용하는 것은 객체 지향 프로그래밍에서 중요한 설계 원칙 중 하나인 개방-폐쇄 원칙(Open-Closed Principle)을 만족시키는 데에도 기여합니다. 이 원칙은 소프트웨어 엔티티(클래스, 모듈, 함수 등)는 확장에는 열려있고 수정에는 닫혀있어야 한다는 것을 의미합니다. 즉, 기존의 코드를 변경하지 않고도 시스템의 기능을 확장할 수 있어야 한다는 개념입니다. ControllerV1 같은 인터페이스는 이 원칙을 실현하는 데 중요한 역할을 합니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

servlet과 container에 대한 질문입니다

0

24

1

api를 어느 컨트롤러에 작성해야하는지는 어떤 기준으로 해야하나요?

0

62

1

jsp 의존성 수정 요청

0

77

2

요즘 웹 서버가 주로 사용되는 이유는 SPA 구조 때문일까요 ?

0

142

1

save() 메서드 문의

0

66

1

절대 경로로 templates/basic 하위 파일 열면 css 적용 안되는 현상

0

99

1

request-body-json

0

83

2

MVC 패턴의 적용 단위

0

94

1

RequestMapping을 이용한 핸들러, 어댑터

0

118

2

save 후 결과화면

0

88

2

jsp를 이용한 view

0

97

1

application.properties에 debug 추가해도 결과가 똑같습니다.

0

177

1

수업 코드 제공 관련 문의

0

97

2

RequestMappingHandlerAdapter의 Controller 호출 과정

0

99

3

파일 오픈 시

0

68

1

스프링 배치 관련

0

77

1

@RequestParam의 defaultValue가 blank 값도 처리하는 지 여부

0

112

1

postman으로 /request-body-json-v1 호출시 500 error

0

94

1

프론트엔드와 백엔드의 mvc, rest api에 대한 질문

0

78

1

모델의 역할과 계층 분리에 대한 이해 차이 + 추가질문

0

111

1

console log 출력 관련 질문입니다.

0

74

1

애플리케이션이 실행 되지 않습니다 ㅠㅠㅠ

0

139

1

html 변경하는 부분 적용 문제

0

103

1

한글 깨짐

0

76

2