수업중 의존성 주입에 대한 방법 3가지가 나왔고 그중 생성자 주입이 추천된다고 한다.
- 생성자를 이용한 방법
- 수정자(Setter)를 이용한 방법
- Field를 이용한 방법
- 초기화시 모든 의존관계가 형성되므로 안전 (컴파일시 문제 인지가능)
- 잘못된 패턴을 찾기가 쉬움(순환참조 감지, nullpointEx)
- 테스트가 쉬워짐
- 불변성의 확보 (final)
이에 대해 자세히 알아보면
setter나 field를 통해 주입할 경우
1. NullPointException이 발생함
2. 주입이 되지않은 채로 객체를 생성하는 것이 가능해짐
3. final을 사용할 수 없으므로 불변성의 확보가 힘듬
4. 순환참조가 될 위험성 내포
https://yaboong.github.io/spring/2019/08/29/why-field-injection-is-bad/