* 의존성 주입(DI, Dependency Injection)
: 프로그래밍에서 구성요소간의 의존 관계 소스코드 내부가 아닌 외부의 설정파일 등을 통해 정의되게 하는 디자인패턴중에 하나이다.
간단하게 말해서 의존성 주입이란 외부에서 의존 객체를 생성하여 넘겨주는 것
예를 들어
A Class와 B Class 가 존재한다
A Class가 B Class를 의존할때 B Object를 A가 직접 생성하지 않고 외부에서 생성하여 넘겨주면 의존성을 주입했다고 한다.
왼쪽 그림은 일반적인 A Class에서 B Object를 생성하는 형태이고, 오른쪽 그림은 A Class에서 B Object를 외부에서 생성하여 의존주입하는 형태이다.
DI(의존성 주입)를 위해서 객체를 생성하고 넘겨주는 일은 DI Framework가 하는 일이다. 외부에서 객체를 생성하고 넘겨주는것을 스프링에서는 컨테이너라고 한다.
* 의존성주입을 사용하는 이유
A Class에서 B Class를 사용하기 위해 선언하면 A Class는 B Class에 의존성을 가진다. 여기서 B Class를 수정했을경우 A Class에 생성한 B Class도 수정해야하는 문제가 발생한다. 즉, 결합도가 높아진다.
그래서 의존성주입이 필요하다.
의존성 주입을 사용했을 경우
1. 객체간의 의존성(종속성)이 줄이거나 없앨수 있다.
2. 객체간의 결합도를 줄이면서 코드의 유연성이 상승한다.