작성
·
109
0
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.
1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)
[질문 내용]
안녕하세요. 스프링 핵심원리에 부분을 재학습 중인 수강생입니다. 다름이 아니라 스프링 컨테이너인 AppllicationContext 는 다양한 인터페이스를 상속받아서 사용하는 것으로 알려주셔서 더 자세한 내용을 파악하고 싶어서 내용을 찾고 알려주신 코드를 고려하니, 문득 궁금한 점이 생겼습니다.
스프링 프레임워크는 당연하게도 철저하게 객체지향적 설계를 위주로 만들어졌을 거라고 생각하는데, 스프링 컨테이너를 만듦에 있어서 다양한 인터페이스를 상속한 이유가 궁금해졌습니다.
관계적 측면에서 스프링 컨테이너와 다양한 인터페이스의 관계는 has-a 관계라고 생각하여 조합을 통한 스프링 컨테이너를 구성하는 것이 더 바람직하다고 생각이 들었는데, 다양한 인터페이스를 상속하여 컨테이너를 구성했음이 왜인지 궁금해졌습니다. 물론 본 강의의 내용과는 밀접한 관련이 없을 수도 있겠지만,, 개인적으로 모르는 부분일 수도 있겠다는 생각이 들었습니다.
또한 지금은 개인적인 의문이지만, 분명 다른 분들도 궁금해하시는 분들도 있을 것이라고 생각됩니다.
명확하지 않아도 부디 고려해볼 수 있는 점이나 아시는 부분이 있으실까요??
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. 변현진님.
스프링 프레임워크에서 ApplicationContext가 다양한 인터페이스를 상속받아 사용하는 이유는 스프링이 지향하는 유연성과 확장성을 달성하기 위함입니다. 스프링은 객체지향의 기본 원칙을 따르면서도 실용적인 측면을 고려하여 설계되었습니다.
다양한 인터페이스를 상속하는 것은 다형성을 최대한 활용하게 해주며, 개발자에게 더 많은 선택지를 제공합니다. 예를 들어, ApplicationContext는 BeanFactory, ResourceLoader와 같은 여러 인터페이스를 상속받습니다. 이러한 구조 덕분에 스프링 컨테이너는 다양한 컴포넌트와의 결합도가 낮으며, 필요에 따라 다른 구현체로 대체할 수 있는 장점이 있습니다.
스프링의 철학은 최소한의 침입성으로 시스템의 여러 부분이 서로 격리되어 작동하면서도 필요할 때는 유연하게 상호작용할 수 있도록 하는 것이며, 이러한 철학이 인터페이스 상속 구조에 잘 드러납니다. 조합을 사용하는 것도 가능하지만, 상속을 통해 스프링 프레임워크는 통일된 접근 방식을 제공하고 있습니다.
이와 관련된 내용은 다음 링크들에서 더 자세히 살펴보실 수 있습니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.