Files
2nd/10_Wiki/Topics_Blog/Dependency-Injection.md
T

1.8 KiB

id, category, confidence_score, tags, last_reinforced
id category confidence_score tags last_reinforced
P-REINFORCE-AI-DEPENDENCY-INJECTION 10_Wiki/💡 Topics/AI 0.99
SoftwareEngineering
Patterns
DI
Decoupling
2026-04-20

Dependency-Injection (의존성 주입)

📌 한 줄 통찰 (The Karpathy Summary)

"직접 사러 가지 말고, 배달받아 써라." 객체가 필요한 의존 객체를 스스로 생성하지 않고, 외부에서 주입받음으로써 코드 간의 결합도를 낮추고 테스트 용이성을 극대화하는 디자인 패턴이다.

📖 구조화된 지식 (Synthesized Content)

  • The Core Concept:
    • 클래스 내부에서 new Service()를 호출하는 순간, 그 클래스는 해당 서비스에 강하게 결합(Coupled)된다.
    • DI는 생성자(Constructor)나 메서드 인자를 통해 외부에서 구현체를 전달받는다.
  • Benefits:
    • Testability: 실제 DB 대신 가짜(Mock) 객체를 주입하여 단위 테스트 가능.
    • Flexibility: 코드 수정 없이 실행 시점에 구현체 교체 가능.
    • Maintenance: 의존성 관리가 한곳(Container)으로 집중되어 구조 파악이 용이.
  • Types: Constructor Injection, Setter Injection, Interface Injection.

⚠️ 모순 및 업데이트 (RL Update)

  • DI 프레임워크(Spring, NestJS 등)를 과도하게 사용하면 의존성 그래프가 너무 복잡해져 런타임 성능에 영향을 주거나 디버깅이 어려워지는 'DI 지옥'에 빠질 수 있다. 객체 간의 관계가 명확할 때는 과도한 추상화보다 직관적인 구성을 고려해야 한다.

🔗 지식 연결 (Graph)