수정자 주입 vs. 생성자 주입
- 생성자 주입을 할 때에는 의존성에 대한 요구사항을 지정할 수 있다(의미 확인 필요…).
- 생성자 주입을 하면 빈 객체를 불변 객체로 사용할 수 있다.
- 수정자 주입은 기본 의존성을 제공할 때는 일반적으로 가장 좋은 방법이다.
- 수정자 주입을 사용하면 인터페이스에서 모든 의존성을 선언할 수 있다.
- 하지만 수정자 주입을 사용하더라도 의존성 주입을 위한 수정자는 인터페이스 외부에 두는 것이 좋다. 각각의 구현체가 각자 필요한 의존성을 정의하고 사용하도록 하면 된다.
구성 인자와 의존성의 차이
- 구성 인자는 내부 혹은 다른 의존성이 동작하는데 사용되어 수동적이라 할 수 있다.
- 구성 인자는 컴포넌트라기 보다는 정보이다.
- 구성 인자는 단순한 값이거나 값들의 컬렉션이다.
- 만일 구성 인자가 인터페이스의 모든 구현체에서 공통으로 사용된다면 구성인자를 인터페이스 안에 구현한다.
의존성 주입 방식 선택
- 수정자 주입을 사용하면 새로운 객체를 생성하지 않아도 의존성을 교체할 수 있다.
- 수정자 주입을 사용하면 명시적으로 객체를 주입하지 않더라도 적절한 기본값을 선택할 수 있다.
- 생성자 주입은 컴포넌트에 의존성 주입을 보장하거나 불변 객체를 설계하는 경우에 좋다.