DI

신경연·2023년 5월 9일
0

Spring

목록 보기
1/5

DI

Dependency Injection (의존성 주입)

DI란 외부에서 두 객체 간의 관계를 결정해주는 디자인 패턴으로, 인터페이스를 사이에 둬서 의존관계가 고정되지 않도록 하고 관계를 동적으로 주입하여 유연성을 확보하고 결합도를 낮출 수 있게 해줍니다.
SpringFramework에서 지원하는 핵심 프로그래밍 모델 중 하나입니다.

1. Dependency

의존성이란 한 객체가 다른 객체를 사용할 때 의존성이 있다고 합니다.
아래 예시에서는 'Store 객체가 Pencil 객체에 의존성이 있다'고 표현합니다.

public class Store {

    private Pencil pencil;

}

2. Injection

주입은 위쪽 코드처럼 의존 객체를 내부에서 생성하는 것이 아닌,
아래쪽 코드처럼 외부에서 생성하는 것을 말합니다.

public class Store {

    private Pencil pencil;

	public Store() {
        this.pencil = new Pencil();
    }
}
public class Store {

    private Pencil pencil;

	public Store(Pencil pencil) {
        this.pencil = pencil;
    }
}

내부에서 생성하면 획일화 된 Pencil의 구조만을 집어넣게 되지만,
외부에서 생성하여 주입해줌으로써 유연성을 확보할 수 있다.
여기에 상품에 대한 Interface와 다형성을 이용한다면 더욱 유연해집니다.

public class Store {

    private Product product;

    public Store(Product product) {
        this.product = product;
    }
}

이제 Store는 Pencil이라는 구체 클래스 와의 결합도를 낮추고 유연성을 확보할 수 있습니다.

DI 정리

한 객체가 어떤 객체(구체 클래스)에 의존할 것인지의 관심사를 분리하고, 외부에서 객체 간의 관계를 결정해 줌으로써 결합도를 낮추고 유연성을 확보해준다.

  • 두 객체 간의 관계라는 관심사의 분리
  • 두 객체 간의 결합도를 낮춤
  • 객체의 유연성을 높임

참고
https://mangkyu.tistory.com/150

profile
반갑습니다

0개의 댓글