본문 바로가기

웹 프로그래밍/Spring

[Spring] DI 실습(1) 의존관계일 때의 번거로운 상황 설명 : 생성자 주입, 속성 주입(setter injection)의 필요성

순서가 좀 꼬여있다.


DI(Dependency Injection)는 의존 주입이다.
의존성은 has-a 패턴일때만 의미가 있다.

Car 클래스에 타이어를 장착해보자.
어떤 브랜드의 타이어를 장착 시킬까요?

Car 클래스는 Tier 인터페이스에 대해 의존성을 가지고 있다. 
- 자동차는 타이어가 있어야 하잖아.
- 타이어가 없으면 Car가 움직이지 않기 때문에, 콤포지션 관계이다.  : 생명 주기를 같이할 때 콤포지션 관계
- (다른 관계는 어그리게이션 관계가 있다.) : 생명주기가 다를 때 ? 어그리게이션 관계

 

아래 처럼, 의존관계가 발생해서 타이어를 바꾸고싶다면 Car라는 클래스의 코드도 바꿔야 한다.

이런 번거로움을 해결하기 위해 생성자 주입, 속성주입(setter injection)을 사용한다.