profile image

L o a d i n g . . .

DI (Dependency Injection) 란?

  • 소프트웨어 디자인 패턴 중 하나
  • 객체 간의 의존성을 줄여 코드의 유연성과 유지보수성을 높임
// DI 사용 X
class A {
    B b = new B();  // A가 B에 강하게 결합돼 있음
    public void doSomething() {
        b.someMethod();  // B의 기능을 사용함
    }
}
  • A 클래스가 B 클래스의 기능을 필요로 한다면 A가 B를 직접 생성해서 사용해야 함
  • 그러나 이 방법은 A와 B가 강하게 결합 됨
  • 즉, 나중에 B를 다른 걸로 교체, 확장성 저하, 유지보수, 테스트 등이 어렵게 됨
A 클래스가 B 클래스의 메서드를 사용한다면, A는 B에 `의존` 하고 있다고 표현 함
// DI 사용 O
class A {
    private B b;
    
    // 생성자 주입
    public A(B b) {  
        this.b = b;  
    }
    
    public void doSomething() {
        b.someMethod();  // 여전히 B의 기능을 사용하지만, B가 뭔지는 모름
    }
}

DI의 3가지 방식

1. 필드 주입 (Field Injection)

2. 수정자 주입 (Setter Injection)

3. 생성자 주입 (Constructor Injection)

 

복사했습니다!