[ 이론 ] DI 의존관계 3가지

Question Murder·2023년 6월 26일
0

DI 의존관계란?
의존관계란 객체간의 결합도를 낮추는 방법 중 하나이다.
한 객체가 다른 객체에 의존하거나 결합도가 높을때 객체간의 의존성도 높아져 해당 객체에대해 변경이 발생할때 다른 객체에도 영향을 미칠 가능성이 높다. DI를 사용하여 객체간의 결합도를 낮출 수 있다.

  • 느슨한 결합과, 유연성과 재사용성, 단위 테스트 용이성이 있다.

의존성 주입 DI 3가지
1. 생성자 주입
2. 세터 주입
3. 필드 주입

생성자 주입
: 생성자 주입을 통해 필요로 하는 의존객체를 주입한다.

  • 명시적인 의존성: 의존하는 객체를 생성자를 통해 필요한 의존객체를 매개변수로 넘겨 주입하는 명확하게 보여준다.
  • 불변성: 생성자 주입은 객체를 생성하는 시점에 의존성이 설정되므로, 이후에 의존성을 변경하기 어려움이 있다.
  • 테스트 용이성: TDD에서 Mock객체를 사용할때 테스트가 가능하다.

세터 주입
의존하는 객체를 setter메서드를 통해 주입하는 방식이다.
(세터 주입은 정확하지않아 나중에 정리하겠다)

필드 주입
말그대로 의존하는 객체를 필드에 직접 주입하는 방식이다.
사용하기 매우 쉽고, 간결하다. 그러나 필드 주입은 추천하지 않는 방식이다 그 이유는 첫번째, TDD 테스트 제약이 있다. 필드 주입은 해당 클래스 필드에 직접적으로 의존하는데 TDD에서는 Mock객체를 사용하기에 대체하기 어렵다.
두번째, 필드에 직접적으로 선언하다보니 의존하는 객체에 직접적으로 결합되기 떄문에 결합도가 높아진다.

이전 프로젝트는 생성자 주입을 통해 의존관계를 설정했다면, 이번 프로젝트에서는 필드주입을 통해 의존관계를 설정하길래 개념 및 활용에 대해 알아보았다.

profile
물음표 살인마

0개의 댓글

관련 채용 정보