의존성 주입 방법
- 생성자 주입
- 필드 주입
- setter 주입
생성자 주입을 주로 사용하는 이유
- 생성자 주입을 하면 필드에 final을 붙일 수 있다.
- 불변이 되는 장점이 있음
- final을 붙이고 생성자 주입을 쓰면 생성자에서 행여나 필드에 값을 할당안하면 컴파일 에러를 발생시킴.(컴파일 시점에서 버그를 알 수 있어 좋음)
- 생성자 주입을 하면 컴파일 단계에서 양방향 참조를 잡아 예외를 발생시켜준다.
- 생성자 주입을 하면 테스트를 쉽게 할 수 있다. 결국 생성자가 만들어지니 fake객체를 넣어주는 식으로 쉬운 테스트를 할 수 있다.
setter 주입의 단점
필드 주입의 단점
- 외부에서 변경이 불가능해서 테스트 하기 힘듦
- DI 프레임워크가 없으면 아무것도 할 수 없음