[Spring] DI *

Jinny Kim·2021년 7월 28일
0

Spring

목록 보기
3/6

의존성 주입 (Dependency InJection)


개념

Dependency InJection, 의존성을 주입한다는 말이다. 말 그대로 객체를 직접 생성하는 것이 아니라 외부에서 생성한 후 주입을 시켜주는 방식이다. '의존성 주입' 은 제어의 역행이 일어날 때 스프링이 내부에 있는 객체들간의 관계를 관리할 때 사용하는 기법이다.

목적

의존성 주입을 이용함으로써, 모듈 간의 결합도가 낮아지고 유연성이 높아진다.

예시

의존성 객체를 생성하는 방법

방법 1.
A객체가 B와 C객체를 New 생성자를 통해서 직접 생성하는 방법이다.
이 경우, B 와 C 객체의 제어권을 객체 A가 갖는다.
의존관계는 간단히 말해 new라는 키워드를 통해 생성된다고 할 수 있다.

public class A{
private B b = new B(); 
private C c = new C();
}

방법 2.
setter()를 이용한 의존성 주입 방식
외부에서 생성 된 객체를 setter()를 통해 사용하는 방법이다. A 객체에서 B, C객체를 사용(의존)할 때 A 객체에서 직접 생성 하는 것이 아니라 외부(IOC컨테이너)에서 생성된 B, C객체를 조립(주입)시켜 setter 혹은 생성자를 통해 사용하는 방식이다.

public class A{

private B b;
private C c;

public void setB(B b){
this.b = b;
}
public void setC(C c){
this.c. = c;
}

}

스프링에서는 객체를 Bean이라고 부르며, 스프링에서는 프로젝트가 실행될때 사용자가 Bean으로 관리하는 객체들을 자동으로 생성해준다. 개발자가 설정 파일(.xml) 즉, 외부에 객체(bean)을 생성하고 난다면, 컨테이너가 스스로 사용할 객체에 주입을 시켜주어 사용하는 방식이다.

방법 3.
생성자를 이용한 의존성 주입 방식

수정 필요





참고 사이트

https://velog.io/@gillog/Spring-DIDependency-Injection#iocinversion-of-control
https://cofived.tistory.com/39
https://leveloper.tistory.com/33
https://private.tistory.com/39

profile
공부한 것들을 기록합니다.

0개의 댓글