-
토비의 스프링 - 5. DI ( Dependency Injection )기술/Java - 토비의 스프링 2022. 8. 3. 19:04
DI ( Dependency Injection )
IoC 라는 용어가 폭넓게 사용되는 언어이기 때문에 스프링 IoC 라고 해서는 다른 프레임워크와 차별화된 특징을 설명하기 어렵다. 때문에 의존관계 주입이라는 새로운 용어를 사용해서 스프링의 차별점을 확실히 설명할 수 있게 했다.
Dependency ( 쉽게 풀어 쓰기 )
James Shore: Dependency Injection Demystified
의존관계는 쉽게 말하면 변수이다. 클래스 내에서 변수를 가지고 있으면 클래스가 그 변수를 의존한다는 뜻이다.
Dependency Injection
의존관계 주입은 다음 세 가지 조건을 충족하는 작업을 말한다.
- 클래스 모델이나 코드에는 런타임 시점의 의존관계가 드러나지 않는다. 그러기 위해서는 인터페이스만 의존하고 있어야 한다.
- 런타임 시점의 의존관계는 컨테이너나 팩토리 같은 제 3의 존재가 결정한다.
- 의존관계는 사용할 오브젝트에 대한 레퍼런스를 외부에서 제공해줌으로써 만들어진다.
DI Container
런타임 시점에 의존관계를 설정하기 위해 DaoFactory 같은 행동을 하는 것을 DI Container 라고 한다.
DI Lookup
클래스 스스로 DI Container 를 통해 Dependency 를 설정하는 것을 DI Lookup 이라고 한다.
이런 방법은 DI 의 장점을 모두 가지고 있지만 코드 안에 오브젝트 팩토리 클래스나 스프링 API 에 의존성이 생긴다는 단점이 있다.
DI 의 장점
- 관심사별로 클래스를 분리할 수 있다.
- 구현 변경 시 기존 클래스를 수정하지 않아도 된다.
'기술 > Java - 토비의 스프링' 카테고리의 다른 글
토비의 스프링 - 4. 제어의 역전 ( IoC ) (0) 2022.08.03 토비의 스프링 - 3. 관심사의 분리 (0) 2022.08.03 토비의 스프링 - 2. 예시 코드를 따라 하기 위한 환경설정 방법 (0) 2022.08.03 토비의 스프링 - 1. 객체 지향 프로그래밍 (0) 2022.08.03