스프링 삼각형과 설정 정보

IOC/DI - 제어의 역전/의존성 주입

프로그래밍에서 의존성이란?

운전자가 자동차를 생산한다.

자동차는 내부적으로 타이어를 생산한다.

Java

new Car();

Car 객체 생성자에서 new Tire();

Car가 Tire에 의존한다.

의존하는 객체(전체)와 의존되는 객체(부분) 사이에 집합 관계(aggregation)과 구성 관계(Composition)으로 구분할 수 있다.

집합 관계 : 부분이 전체와 다른 생명 주기를 가질 수 있다.

예 : 집 vs 냉장고

구성 관계 : 부분은 전체와 같은 생명 주기를 갖는다.

예 : 사람 vs 심장

public class Car {
    Tire tire;
    
    public Car() {
        tire = new KoreaTire();
        //tire = new AmericaTire();
    }
    
}
//의존성 주입 받게 개선
public class Car {
    Tire tire;
    
    public Car(Tire tire) {
        this.tire = tire;
    }
    
}
public class Driver {
    public static void main(String[] args) {
        Tire tire = new KoreaTIre();
        // Tire tire = new AmericaTire();
        
        Car car = new Car(tire);
    }
}

Car는 tire를 외부에서 주입받음으로써 타이어의 변경에 따라 코드가 변경되지 않아도 된다.

Last updated