archive

Spring DI(의존성 주입, Dependency Injection) 본문

STUDY/Spring

Spring DI(의존성 주입, Dependency Injection)

seonyounggg 2021. 2. 25. 20:50

Dependency Injection은 의존하는 클래스를 직접 생성하는 것이 아닌, 외부에서 객체를 주입해주는 방식으로, 

DI는 IoC(Inversion of Control)의 일종이다.

 

객체가 서로 의존성을 가지고 있는 경우, 어느 한 쪽에 변화가 생기면 다른 한 쪽에도 영향이 간다.

DI를 통해 이를 해결할 수 있다. 즉, 객체 간의 결합도를 줄여 코드의 재활용성이 높아진다.

아래와 같이 new 키워드로 직접 객체를 생성하는 것이 아니라,

public class Controller {
	private Service service = new Service();
}

외부에서 객체를 전달받는 것이다.

public Class Controller{
  private Service service;
  
  public Controller(Service service) {
          this.service = service;
  }
}

 

스프링에서 의존성을 주입하는 방식에는 크게 세가지가 있다.

1. 생성자를 통한 주입

2. 필드를 통한 주입

3. Setter를 통한 주입

이 중, 생성자를 통한 주입방식이 권장된다.

 

스프링에서는 스프링 컨테이너에서 필요한 객체들을 생성해서 저장한다.

이 때 객체를 Bean이라고 하며, 생성 시 의존 관계에 따라 객체가 주입된다.

annotation 또는 xml 파일을 사용해서 Bean객체의 의존성 관계를 설계할 수 있다.

 

각각의 방식에 대해서는 다음 포스팅에서 다루겠다.

 

 

 

 

Comments