• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

DI를 사용하는 이유

22.01.01 00:47 작성 조회수 339

2

안녕하세요 선생님.

 

강의 항상 잘 듣고 있습니다.

 

이번 강의를 들으면서 궁금한 점이 의존성 주입이 어떤 이유에서 필요한지 잘 모르겠습니다.

즉, 그냥 의존성 주입을 하지 않고 express와 같이 import 해서 사용할 수 있는데 이를 의존성 주입을 하여 사용할 경우 어떤 이점이 생기나요?

답변 3

·

답변을 작성해보세요.

4

bee님의 프로필

bee

2022.01.05

강사님은 아니지만 강의 마지막 1분 정도부터 왜 의존성 주입을 사용하는지에 대한 강사님의 말씀이 있으셔서 받아 적고 정리한 내용인데요!

NestJS은 객체 지향 프로그래밍이고, 객체 지향 프로그래밍의 핵심 목표는 실생활과 유사하게 코드를 짜는 것이기 때문에 의존성 주입이 의미가 있다고 말씀하셨습니다.

그도 그럴 게 의존성 주입을 하게 되면 강사님의 예시처럼 실생활과 같은 공급자-소비자의 관계가 명료하게 나타나고, 이렇게 함으로써 유지보수도 간편해지면서 확장성 있는 더 탄탄한 백엔드 애플리케이션을 짤 수 있다고 말씀해 주셨네요.

아직 답변이 안 달렸길래 마침 정리한 내용이 혹시나 도움이 되실까 정리한 적어 봤어요... ㅎㅎ 이 외의 더 자세한 내용은 아마 강사님이 달아주시지 않을까 싶습니다.

 

1

study5님의 프로필

study5

2022.02.07

모듈을 만들다보면 모듈과 모듈은 의존하게 됩니다. 이 말은 즉 의존성이 높아진다는거죠 의존성이 높아지면 테스트 및 코드 수정이 어려워지고 프로젝트 크기가 커지면 커질수록 "숙취 증후군"이 생깁니다. 그러므로 DI를 시키므로서 의존성 결합을 낮춰야 합니다.

0

2v2님의 프로필

2v2

2022.10.10

사실 저도 이번 강의에서 의존성 주입에 대한 설명이 많이 부족했다고 생각이드네요, 저는 김영한 강사님의 스프링 입문을 들으면서 의존성 주입에 대해서 이해를 확실히 하게 되었는데요
의존성 주입이 필요한 이유는 결국 역할과 구현을 분리하기 위해서 입니다. 의존성 주입이 없을 경우, 만약 서비스가 변경되면 (구현의 변화가 있을 때) 컨트롤러 코드를 수정(다른 서비스를 New 로 생성하도록)해야 해서 객체지향의 핵심 목표인 DIP, OCP를 위반하게 됩니다

따라서 누군가가 대신 컨트롤러에게 구현 객체(서비스)를 생성해서 주입해줘야 합니다. 여기서 이 누군가가 바로 프레임워크라고 생각하시면 됩니다.

설명이 잘 된건지 모르겠네요, 개인적으로 Nest 는 스프링과 유사한 면이 있고 애초에 원리를 잘 깨닫기 위해서는 김영한 강사님의 입문 강의도 추천드려요 그리고 스스로 한번 더 검색하고 공부하는 것도 많은 도움이 됩니다

Dev님의 프로필

Dev

질문자

2022.10.13

답변 감사합니다!
혹시 강의 제목 알 수 있을까요?